我有一个WPF TreeView,我想删除蓝色"选择"将鼠标悬停在图标的左侧。 我希望你明白我的意思:D
这是问题的图片
TreeView由后面的代码填充,我以编程方式构建Item。
TreeViewItem.Header XAML如下所示:
<StackPanel Orientation="Horizontal" ...>
<Image ... />
<TextBlock .../>
</StackPanel>
答案 0 :(得分:1)
这就像一个解决方法,它不是一个好的解决方案:
<StackPanel Orientation="Horizontal" Margin="-1,0,0,0">
<Image Source="/Images/yourImage.jpg" Height="30" Width="30"/>
<TextBlock Text="Hey"/>
</StackPanel>
但是,最好使用HierarchicalDataTemplate
:
<TreeView ItemsSource="{Binding Leafs}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type vm:LeafViewModel}" ItemsSource="{Binding Children}">
<ContentControl Content="{Binding }">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}"/>
</Style>
</ContentControl.Style>
</ContentControl>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
及其HierarchicalDataTemplate
:
<HierarchicalDataTemplate x:Key="DefaultTemplate" DataType="{x:Type vm:LeafViewModel}" ItemsSource="{Binding Children}">
<Border Tag="{Binding DataContext, RelativeSource={RelativeSource Self}}" Background="Transparent">
<StackPanel Orientation="Horizontal">
<Label VerticalAlignment="Center" FontFamily="WingDings" Content="1"/>
<CheckBox IsChecked="{Binding IsCheckedFoo}"/>
<TextBlock Name="leafTxtBox" Text="{Binding LeafName}" Tag="{Binding DataContext, RelativeSource={RelativeSource Self}}" Background="Transparent"/>
</StackPanel>
</Border>
</HierarchicalDataTemplate>
关于如何使用TreeView
without violating MVVM rules is by Josh Smith.
答案 1 :(得分:0)
TreeView将项目包装到TreeViewItem容器中。 TreeViewItem有Padding 1,0,0,0
,可以通过Style
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Setter Property="Padding" Value="0"/>
</Style>
</TreeView.Resources>
答案 2 :(得分:0)
有4个画笔通常与此对应,并由TreeViewItem的默认模板
使用键:
HighlightBrushKey - 焦点背景。
HighlightTextBrushKey - 具有焦点的前景。
InactiveSelectionHighlightBrushKey - 无焦点的背景。
InactiveSelectionHighlightTextBrushKey - 没有焦点的前景。
根据您的需要覆盖它们,因为您的要求会像这样做得很好:
<TreeView>
<TreeView.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}"
Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}"
Color="Black" />
</TreeView.Resources>
</TreeView>