我需要帮助在我的radTreeView中实现一个样式

时间:2012-05-30 14:03:11

标签: c# wpf xaml styles radtreeview

我想从radtreeview中获取高亮背景。我创建了一个样式来执行此操作,但我不断收到错误和异常,例如“项目集合必须为空”。如果我注释掉应用程序的样式,那么我知道这是问题的原因。我是WPF的新手,我确信我还不明白如何使用样式。 谢谢你的帮助。这是代码。

<Grid x:Name="LayoutRoot" Background="Salmon">

        <telerik:RadTreeView x:Name="radTreeView" Margin="8" ItemsSource="{Binding Errors}" Background="Salmon" Style="{StaticResource treeStyle}">
             <Style TargetType="{x:Type telerik:RadTreeViewItem}" x:Name="treeStyle">
                <Setter Property="Focusable" Value="False"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background" Value="{x:Null}"/>
                        <Setter Property="BorderBrush" Value="{x:Null}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>


            <telerik:RadTreeView.ItemTemplate>
                 <HierarchicalDataTemplate ItemsSource="{Binding SubItems}" >
                    <Grid Background="Salmon">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>

                        </Grid.RowDefinitions>
                        <TextBlock Text="{Binding Description}" IsHitTestVisible="False" />

                        <ListBox Grid.Row="1" ItemsSource="{Binding Messages}" Margin="20,0,0,0" BorderBrush="#00000000" BorderThickness="0" Background="Salmon" IsHitTestVisible="False" >
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Message}"/>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </Grid>

                </HierarchicalDataTemplate>


            </telerik:RadTreeView.ItemTemplate>


        </telerik:RadTreeView>

    </Grid>

</UserControl>

如果您知道这不起作用,我也试图摆脱样式代码的亮点:

<Style TargetType="TreeViewItem">
      <Style.Resources>
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FFF"/>
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="#000"/>
     </Style.Resources>  
</Style>

1 个答案:

答案 0 :(得分:2)

您获得例外,因为您的样式标记实际上是树中的项目,并且您设置了ItemsSource

使用<telerik:RadTreeView.ItemContainerStyle>标记围绕该样式。

这应该解决异常但它不会给你预期的结果,因为树视图项的控件模板实际上显示了另一个不受Background属性影响的边框。您需要更改控制模板。

Telerik更改版本之间的样式,因此为您提供错误版本的模板可能对您没有帮助。

但是,您可以转到Telerik的安装文件夹并查找名为“Themes”的文件夹。在那里,你会找到一个包含telerik所有主题的解决方案。

  • 选择您使用的那个。
  • 查找树视图的资源字典,并将项目的样式和模板复制到项目中。
  • 更改xmlns定义,确保您拥有样式所依赖的所有画笔和资源。
  • 运行以查看样式是否正常。
  • 在模板中,找到VisualState x:Name="MouseOver"并删除其中的故事板。