我有一个只有1级项目的WPF TreeView.TreeView是绑定到ObservableCollection字符串的数据.如何确保TreeView中每个节点左侧显示相同的图标?
小智 12
我认为最好的方法是在TreeView上设置一个Style,它将改变TreeViewItems的模板以获得你想要的Image.
模板可能需要是一个带有图像和标签控件的StackPanel,您将图像绑定到您的图标,将标签文本绑定到Observable集合中的字符串.
我已经从Code Project文章中复制了相关的代码片段,其中更详细地介绍了这一点,但我认为以下是您所需要的(此代码在TreeView.Resources元素中).
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Name="img"
Width="20"
Height="20"
Stretch="Fill"
Source="image.png"/>
<TextBlock Text="{Binding}" Margin="5,0" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
Eis*_*ect 12
我认为有助于您理解TreeView的最佳文章之一是http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx.一般来说,这描述了一组很好的模式,可以使WPF/SL中的很多场景变得更加容易.
Zac*_*son 11
我用这种方式使用James Osborn的StackPanel技术 ......
XAML:
<TreeView Name="TreeViewThings" ItemsSource="{Binding}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Thing}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal" Margin="2">
<Image Source="Thing.png"
Width="16"
Height="16"
SnapsToDevicePixels="True"/>
<TextBlock Text="{Binding Path=Name}" Margin="5,0"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28776 次 |
| 最近记录: |