2014-02-23 24 views
1

我使用telerik:RadTreeView用下面的代码如何获取RadTreeView儿童保证金?

<telerik:RadTreeView x:Name="ViewPlaybackTreeView" Uid="-1" IsTriStateMode="True" Style="{StaticResource SettingTreeViewStyle}" 
ItemContainerStyle="{StaticResource SettingRadTreeViewTimePickerItemStyle}"> 
    <telerik:RadTreeViewItem x:Name="ViewPlaybackTreeViewItem" Uid="-1" IsExpanded="False" 
    ItemContainerStyle="{StaticResource SettingRadTreeViewTimePickerItemStyle}"/> 
</telerik:RadTreeView> 

<Style x:Key="SettingTreeViewStyle" TargetType="telerik:RadTreeView"> 
    <Setter Property="SelectionMode" Value="Extended"/> 
    <Setter Property="IsLineEnabled" Value="True"/> 
    <Setter Property="ItemsOptionListType" Value="CheckList"/> 
    <Setter Property="IsOptionElementsEnabled" Value="True"/> 
    <Setter Property="IsRootLinesEnabled" Value="True"/> 
    <Setter Property="VerticalAlignment" Value="Top"/> 
    <Setter Property="IsTriStateMode" Value="True"/> 
</Style> 

<Style x:Key="SettingRadTreeViewTimePickerItemStyle" TargetType="{x:Type telerik:RadTreeViewItem}"> 
    <Setter Property="Foreground" Value="White"/> 
    <Setter Property="FontSize" Value="13"/> 
    <Setter Property="Margin" Value="0,0,0,0"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type telerik:RadTreeViewItem}"> 
       <Grid x:Name="RootElement"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 
        <Grid x:Name="HeaderRow" Background="Transparent" MinHeight="{TemplateBinding MinHeight}" SnapsToDevicePixels="True"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="2"/> 
         <Border x:Name="SelectionUnfocusedVisual" BorderBrush="#FFDBDBDB" BorderThickness="1" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="1" Visibility="Collapsed"> 
          <Border BorderBrush="Transparent" BorderThickness="1" CornerRadius="0"> 
           <Border.Background> 
            <LinearGradientBrush EndPoint="0,1"> 
             <GradientStop Color="#FFF8F6F9" Offset="0"/> 
             <GradientStop Color="#FFF0F0F0" Offset="1"/> 
            </LinearGradientBrush> 
           </Border.Background> 
          </Border> 
         </Border> 
         <Border x:Name="SelectionVisual" BorderBrush="#FFFFC92B" BorderThickness="1" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="1" Visibility="Collapsed"> 
          <Border BorderBrush="White" BorderThickness="1" CornerRadius="0"> 
           <Border.Background> 
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
             <GradientStop Color="#FFFCE79F" Offset="1"/> 
             <GradientStop Color="#FFFDD3A8"/> 
            </LinearGradientBrush> 
           </Border.Background> 
          </Border> 
         </Border> 
         <StackPanel x:Name="IndentContainer" Orientation="Horizontal"> 
          <Rectangle x:Name="IndentFirstVerticalLine" Stroke="#FFCCCCCC" Visibility="Collapsed" VerticalAlignment="Top" Width="1"/> 
         </StackPanel> 
         <Grid x:Name="ListRootContainer" Grid.Column="1" HorizontalAlignment="Center" MinWidth="20"> 
          <Rectangle x:Name="HorizontalLine" HorizontalAlignment="Right" Height="1" Stroke="#FFCCCCCC" VerticalAlignment="Center"/> 
          <Rectangle x:Name="VerticalLine" HorizontalAlignment="Center" Stroke="#FFCCCCCC" VerticalAlignment="Top" Width="1"/> 
          <ToggleButton x:Name="Expander" Background="{TemplateBinding Background}" IsTabStop="False"/> 
          <Grid x:Name="LoadingVisual" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5" Visibility="Collapsed" VerticalAlignment="Center"> 
           <Grid.RenderTransform> 
            <TransformGroup> 
             <RotateTransform Angle="0" CenterY="0.5" CenterX="0.5"/> 
            </TransformGroup> 
           </Grid.RenderTransform> 
           <Path Data="M1,0A1,1,90,1,1,0,-1" Height="10" StrokeStartLineCap="Round" Stretch="Fill" Stroke="{TemplateBinding Foreground}" StrokeThickness="1" Width="10"/> 
           <Path Data="M0,-1.1L0.1,-1 0,-0.9" Fill="{TemplateBinding Foreground}" HorizontalAlignment="Left" Height="4" Margin="5,-1.5,0,0" Stretch="Fill" StrokeThickness="1" VerticalAlignment="Top" Width="4"/> 
          </Grid> 
         </Grid> 
         <CheckBox x:Name="CheckBoxElement" Grid.Column="2" IsTabStop="False" Visibility="Collapsed" HorizontalAlignment="Left" VerticalAlignment="Center" Style="{StaticResource UserTreeSettingCheckboxStyle}"> 
         </CheckBox> 
         <RadioButton x:Name="RadioButtonElement" Grid.Column="2" IsTabStop="False" Margin="5,0,0,0" Visibility="Collapsed" VerticalAlignment="Center"> 
          <telerik:StyleManager.Theme> 
           <telerik:Office_BlackTheme/> 
          </telerik:StyleManager.Theme> 
         </RadioButton> 
         <Image x:Name="Image" Grid.Column="3" HorizontalAlignment="Center" MaxWidth="16" MaxHeight="16" Margin="2" VerticalAlignment="Center"/> 
         <Rectangle x:Name="FocusVisual" Grid.ColumnSpan="6" Grid.Column="2" IsHitTestVisible="False" RadiusY="3" RadiusX="3" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2" Visibility="Collapsed"/> 
         <Grid Grid.ColumnSpan="2" Grid.Column="4"> 
          <ContentPresenter x:Name="Header" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
          <ContentPresenter x:Name="EditHeaderElement" ContentTemplate="{TemplateBinding HeaderEditTemplate}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         </Grid> 
         <toolkit:TimePicker x:Name="TimeStart" Grid.Column="6" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Format="Custom" FormatString="HH:mm"/> 
         <toolkit:TimePicker x:Name="TimeEnd" Grid.Column="6" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Center" Format="Custom" FormatString="HH:mm"/> 
        </Grid> 
        <ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Visibility="Collapsed"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsInEditMode" Value="True"> 
         <Setter Property="Visibility" TargetName="Header" Value="Collapsed"/> 
         <Setter Property="Visibility" TargetName="EditHeaderElement" Value="Visible"/> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="IsChecked" TargetName="CheckBoxElement" Value="True"/> 
        </Trigger> 
        <Trigger Property="IsChecked" Value="True"> 
         <Setter Property="IsChecked" TargetName="CheckBoxElement" Value="True"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Foreground" Value="#FF52686E"/> 
        </Trigger> 
        <Trigger Property="IsExpanded" Value="True"> 
         <Setter Property="Visibility" TargetName="ItemsHost" Value="Visible"/> 
        </Trigger> 
        <Trigger Property="IsLoadingOnDemand" Value="True"> 
         <Trigger.EnterActions> 
          <BeginStoryboard x:Name="LoadingVisualTransform"> 
           <Storyboard> 
            <DoubleAnimation Duration="0:0:1" From="0" RepeatBehavior="Forever" To="359" Storyboard.TargetProperty="Angle" Storyboard.TargetName="LoadingVisualAngleTransform"/> 
           </Storyboard> 
          </BeginStoryboard> 
         </Trigger.EnterActions> 
         <Trigger.ExitActions> 
          <StopStoryboard BeginStoryboardName="LoadingVisualTransform"/> 
         </Trigger.ExitActions> 
         <Setter Property="Visibility" TargetName="LoadingVisual" Value="Visible"/> 
         <Setter Property="Visibility" TargetName="Expander" Value="Collapsed"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Foreground" Value="#FF1E7787"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

而结果时运行该代码,如下图所示 enter image description here

的问题是两个第一TimePickers不是“左对齐”下面的人。 我想我可以设置它们的左边距来纠正它,但我不知道我必须设置的确切“左边距”值。

有人可以告诉我如何解决我的问题?

非常感谢!

牛逼&牛逼

回答

1

这是为每个级别一个固定的利润率,让你用一个转换器来设置保证金水平*固定的利润率。发挥一下,以获得正确的价值。

但我建议不要使用像这样的RadTreeView。 Telerik有另一个组件,它以更好的方式解决了这个问题。 RadTreeListView(http://www.telerik.com/help/wpf/radtreelistview-overview.html)。它的作用就像一个普通的树形视图,但是你可以在你的树旁边创建一个列,它自动对齐你的控件或者你放入它们的任何东西。如果您设置边距,则取决于可能因不同样式而改变的图形属性。

public class MarginConverter : IValueConverter 
{ 
    const int FIXED_MARGIN = 30; 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (int)value * FIXED_MARGIN; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (int)value/FIXED_MARGIN; 
    } 
} 

<telerik:RadTreeView x:Name="ViewPlaybackTreeView" Uid="-1" IsTriStateMode="True" > 
     <telerik:RadTreeViewItem x:Name="ViewPlaybackTreeViewItem" Uid="-1" IsExpanded="False" Margin="{Binding Level, Converter={StaticResource MarginConverter }}"/> 
</telerik:RadTreeView> 

然后一个级别属性添加到您的类。

+0

谢谢大卫,你能否给我提供“转换器设置保证金为等级*固定保证金”的示例代码。我不知道。 – TTGroup

+0

查看示例。但我真的建议尝试RadTreeListView。 – David