我将如何修改当前的TreeView,以支持父节点的‘关键,警报’,然后子节点将是该严重类型的消息。我使用的是绑定到ObservableCollection的TreeView。在每种消息类型中都有更多的数据,但我只想让用户看到其中的几个数据。然后,当用户单击其中一个子节点时,从集合中的该项中提取其他数据,并将其显示在需要的地方。我将ID添加为隐藏的,因为我不确定是否需要引用集合中引用该项的唯一引用。我还想为每个父节点默认一个不同的图标,子节点不会有一个图标。
希望我能描述一下,这样就可以理解了。
XMAL
<TreeView x:Name="tvMessages" HorizontalAlignment="Left" Height="262" Margin="10,37,0,0" VerticalAlignment="Top" Width="248">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Icon}" />
<TextBlock Text="{Binding Description}" />
<TextBlock Text="{Binding ID}" Visibility="Hidden" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
MessageData
public class MessageData
{
public Guid ID { get; set; }
public string Severity { get; set; }
public string Description { get; set; }
public string ClientID { get; set; }
public string Specialty { get; set; }
public DateTime IssuedDate { get; set; }
}
发布于 2013-12-03 00:39:51
它有点老了,但是这个MSDN博客应该会让你走上正确的方向,http://blogs.msdn.com/b/mikehillberg/archive/2009/10/30/treeview-and-hierarchicaldatatemplate-step-by-step.aspx
发布于 2013-12-03 02:26:20
显示分层数据..。你需要有层次数据。最简单的方法是将MessageData
类型的集合(子节点)添加到MessageData
类中:
public class MessageData
{
public Guid ID { get; set; }
public string Severity { get; set; }
public string Description { get; set; }
public string ClientID { get; set; }
public string Specialty { get; set; }
public DateTime IssuedDate { get; set; }
public ObservableCollection<MessageData> Messages { get; set; }
}
XAML所需的更改也很小:
<TreeView x:Name="tvMessages" ItemsSource="{Binding YourMessageDataObservableCollection}" HorizontalAlignment="Left" Height="262" Margin="10,37,0,0" VerticalAlignment="Top" Width="248">
<TreeView.Resources>
<DataTemplate DataType="{x:Type YourxmlNamespacePrefix:MessageData}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Icon}" />
<TextBlock Text="{Binding Description}" />
<TextBlock Text="{Binding ID}" Visibility="Hidden" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Messages}" />
</TreeView.ItemTemplate>
</TreeView>
值得注意的一点:
Binding
ObservableCollection
设置为TreeView.ItemsSource
属性。INotifyPropertyChange
类中实现MessageData
接口。DataTemplate
添加到TreeView.Resources
部分而不设置x:Key
属性,它将显式地设置在TreeView
中的所有MessageData
实例上。https://stackoverflow.com/questions/20344313
复制