所以我有一个很好的treeView。但是我的问题是我想显示不同类型的不同树,而不必为XAML中的每种情况创建一个树。我知道如何从后面的代码中设置listView的内容,treeView是否可能?我的treeView现在看起来如下所示,但显然仅适用于CAN消息类型的项目:
<TreeView TreeViewItem.Selected="OnItemSelected" MouseDoubleClick="Tree_MouseDoubleClick" Name="tree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type srcM:CANMessage}" ItemsSource="{Binding Signals}">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Name}"/>
<TextBlock Text=" (0x"/>
<TextBlock Text="{Binding CANid}"/>
<TextBlock Text=")"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
问题是我有不同的情况。例如,我只想显示类型字符串的ADTF类的信号列表(如下所示)。 在另一种情况下,我想显示CAN类的CANMessages列表,对于每个消息元素,我想要设置它包含为子元素的信号列表(在XAML示例中实现)。我有以下课程的简短版本:
public class ADTF : ISignalSource
{
public string Id { get; set; }
public List<string> Signals { get; set; }
}
和
public class CAN: ISignalSource
{
public string Id { get; set; }
public List<CANMessage> Signals { get; set; }
}
public class CANMessage
{
public string Id { get; set; }
public List<string> Signals { get; set; }
}
所以我认为我需要做的是为每种情况创建一个HierarchicalDataTemplate。但我想在后面的代码中执行此操作,因为与在每种情况下在XAML中实现HierarchicalDataTemplate相比,它花费的代码更少。有没有办法解决这个问题?