我正在尝试创建一个WPF树视图,它应该根据TreeViewItem的Tag property
添加TreeviewItem(节点)前面的图像。我希望这可以使用此属性,因为我将让我的PowerShell脚本在执行期间动态创建treenodes。
这是我在WPF应用程序中使用的XAML:
<TreeView Name="MainTreeview1" Margin="10,248,10,151" Padding="-2,1,1,1">
<TreeView.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Name="TreeNodeIMG" Width="20" Height="20" Stretch="Fill">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding Tag}" Value="0">
<Setter Property="Source" Value="images\ImageForTag0.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Tag}" Value="1">
<Setter Property="Source" Value="images\ImageForTag1.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock VerticalAlignment="Center" Text="{Binding}" Margin="5,0" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TreeView.Resources>
<TreeViewItem Header="TestWithIMG1" Tag="0"/>
<TreeViewItem Header="TestWithIMG2" Tag="1"/>
</TreeView>
如果使用treeviewitem模板可以实现这一点,那么我也可以这么做,因为我可以轻松区分treenodes。
答案 0 :(得分:0)
这是可能的,但您需要以不同方式定义绑定源,因为Tag不是DataContext的属性,它是TreeViewItem属性
<Style.Triggers>
<DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
Value="0">
<Setter Property="Source" Value="images\ImageForTag0.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
Value="1">
<Setter Property="Source" Value="images\ImageForTag1.png"/>
</DataTrigger>
</Style.Triggers>