TreeView - 绑定
TreeView - Binding
我在将 class 绑定到我的 TreeView
时遇到问题。它真的不起作用,我什么也没显示。
这是我的 class:
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>
我想我的绑定有问题,但不知道是什么问题。
在我的 ViewModel 中,我有一个 main 实例也命名为 main,所以它应该绑定它。
给出层次结构我从数据库中获取我的名字只是例子。
视图必须如下所示
首先:当你想绑定一个列表到视图时你必须ObservableCollection <T>
,否则它不会显示视图的变化。 (我不知道你对 C# 有多熟悉,然后我在 <T>
中说,T 表示你正在列出它们的任何类型。例如 ObservableCollection <Person>
)。
其次:如果将整个列表绑定到树视图,则无需逐个绑定。
第三:您是否在任何地方为您的绑定设置了 DataContext?
你需要在代码隐藏中做这样的事情:
this.DataContext = new Class();
然后绑定到这个 Class 属性。这个 Class 应该是你在视图模型中的主要 class。
我在将 class 绑定到我的 TreeView
时遇到问题。它真的不起作用,我什么也没显示。
这是我的 class:
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>
我想我的绑定有问题,但不知道是什么问题。
在我的 ViewModel 中,我有一个 main 实例也命名为 main,所以它应该绑定它。
给出层次结构我从数据库中获取我的名字只是例子。
视图必须如下所示
首先:当你想绑定一个列表到视图时你必须ObservableCollection <T>
,否则它不会显示视图的变化。 (我不知道你对 C# 有多熟悉,然后我在 <T>
中说,T 表示你正在列出它们的任何类型。例如 ObservableCollection <Person>
)。
其次:如果将整个列表绑定到树视图,则无需逐个绑定。
第三:您是否在任何地方为您的绑定设置了 DataContext?
你需要在代码隐藏中做这样的事情:
this.DataContext = new Class();
然后绑定到这个 Class 属性。这个 Class 应该是你在视图模型中的主要 class。