我想从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>
答案 0 :(得分:2)
您获得例外,因为您的样式标记实际上是树中的项目,并且您设置了ItemsSource
。
使用<telerik:RadTreeView.ItemContainerStyle>
标记围绕该样式。
这应该解决异常但它不会给你预期的结果,因为树视图项的控件模板实际上显示了另一个不受Background
属性影响的边框。您需要更改控制模板。
Telerik更改版本之间的样式,因此为您提供错误版本的模板可能对您没有帮助。
但是,您可以转到Telerik的安装文件夹并查找名为“Themes”的文件夹。在那里,你会找到一个包含telerik所有主题的解决方案。
VisualState
x:Name="MouseOver"
并删除其中的故事板。