我有可以表示层次结构的类型字段列表:List MyFields
public class Field
{
public Field(string name, string value)
{
this.Name = name;
this.Value = value;
}
public string Name { get; set; }
public string Value { get; set; }
public IList<Field> SubFields { get; set; }
}
如何将MyField绑定到TreeView?
编辑: 我忘记了,我想要例如。单击该项目时,在消息框中显示该值。
答案 0 :(得分:2)
将TreeViews ItemsSource设置为要绑定的属性。
答案 1 :(得分:0)
您可以创建一个HierarchicalDataTemplate
,它应放在TreeView的资源中或更高级别,请务必将DataType
设置为您的类以使其适用。
例如:
<HierarchicalDataTemplate DataType="{x:Type data:Field}"
ItemsSource="{Binding SubFields}">
<ContentControl MouseDoubleClick="TreeViewItem_MouseDoubleClick">
<TextBlock Text="{Binding Name}"/>
</ContentControl>
</HierarchicalDataTemplate>
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
Field field = (sender as FrameworkElement).DataContext as Field;
MessageBox.Show(field.Value.ToString());
}
您还需要一个根元素列表,您可以将其绑定到TreeView本身的ItemsSource
。