c# - TreeView - 绑定
问题描述
我在将类绑定到我的TreeView
. 它真的不起作用,我什么也没显示。
这是我的课:
public class Main
{
public List<Child1> Ch1 { get; set; }
public List<Child2> Ch2 { get; set; }
}
public class Child1
{
public String CName { get; set; }
public List<Grandson> Grandson { get; set; }
public int Age { get; set; }
}
public class Grandson
{
public String GName { get; set; }
public List<Son> Son{ get; set; }
public List<Daught> Daught{ get; set; }
public int Age { get; set; }
}
public class Son
{
public String OName { get; set; }
public int Age { get; set; }
}
public class Daught
{
public String DName { get; set; }
public int Age { get; set; }
}
public class Child2
{
public String C2Name { get; set; }
public int Rights { get; set; }
}
如您所见,我有很多列表和列表中的列表,我想将它们放入 TreeView 中。
<TreeView Grid.Row="1" ItemsSource="{Binding Main}" IsEnabled="{Binding TreeEnabled}" >
<TreeViewItem Header="{Binding CName}" ItemsSource="{Binding Ch1}" >
<TreeViewItem Header="{Binding GName}" ItemsSource="{Binding Grandson}" >
<TreeViewItem Header="{Binding OName}" ItemsSource="{Binding Son}" >
</TreeViewItem>
<TreeViewItem Header="{Binding DName}" ItemsSource="{Binding Daught}"></TreeViewItem>
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="{Binding C2Name}" ItemsSource="{Binding Child2}"></TreeViewItem>
</TreeView>
我想我的绑定有问题,但不知道是什么问题。
解决方案
首先:您必须ObservableCollection <T>
在要将列表绑定到视图时进行,否则它不会显示对视图的更改。(我不知道您对 C# 有多熟悉,然后我说<T>
,T 表示您正在列出它们的任何类型。例如ObservableCollection <Person>
)。
第二:如果将整个列表绑定到树视图,则无需一一绑定。
第三:您是否在任何地方为您的绑定设置了 DataContext?
你需要在代码隐藏中做这样的事情:
this.DataContext = new Class();
然后绑定到这个 Class 属性。这个类应该是你在视图模型中的主要类。
推荐阅读
- python - 将变量传递给不同的类
- sqlite - 从切除表中创建新表
- netsuite - Netsuite 字段更改值
- c - 如何告诉 gcc 在哪里可以找到 cc1?
- matplotlib - 如何在 x 轴上打印列表的平均值?
- css - 我的网站主体的背景图片在桌面上响应,但在实际手机上不响应
- cordova - 在cordova项目中集成了cordova-plugin-applepay,但付款没有成功,使用了cordova的相同代码
- angular - ng update from 7 to 8 不会更新代码
- unix - Unix 命令 - 用冗长的行递归查找文件
- linux - 使用“git submodule foreach”可以跳过子模块列表吗?