简而言之,这就是它组合在一起的方式。
首先,您定义一个模型来保存您的数据以进行绑定。
public sealed class MyListBoxItem
{
public string Field1 {get;set;}
public string Field2 {get;set;}
public string Field3 {get;set;}
}
现在,您必须有一个类来保存这些模型以进行绑定。这种类型通常称为 ViewModel;它根据来自视图的用户输入向视图提供信息以进行绑定。它的公共属性通常是 ObservableCollections 和 DependencyProperties,因此 ViewModel 中的更改将由 View(UI)自动获取:
public sealed class MyViewModel
{
public ObservableCollection<MylistBoxItem> Items {get;private set;}
public MyViewModel()
{
Items = new ObservableCollection<MyListBoxItem>();
Items.Add(new MyListBoxItem{Field1="One", Field2="Two",Filed3="Three"};
}
}
在 UI 的代码隐藏中,即“视图”,您可以实例化您的 ViewModel 并将其设置为您的视图的 DataContext。
public MyView()
{
this.DataContext = new MyViewModel();
}
这很重要,因为 DataContext “流动”通过可视化树。它可用于设置它的每个子元素。
要显示项目,我必须将 ListView 的 ItemsSource 绑定到 DataContext 的 Items 属性(这是理解的)。ListView 中的每一行都将其 DataContext 设置为 Items 属性中的每个单独的 MyViewModel。因此,您必须将每个显示成员绑定到 MyListBoxItem 的属性。
<ListView Name="RecordListView" ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="1" Width="Auto" DisplayMemberBinding="{Binding Path=Field1}" />
<GridViewColumn Header="2" Width="50" DisplayMemberBinding="{Binding Path=Field2}" />
<GridViewColumn Header="3" Width="100" DisplayMemberBinding="{Binding Path=Field3}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
为了更好地理解整个过程,请在此处搜索标记为[MVVM]的高评分问题。
此外,为了帮助调试您的绑定,为详细数据绑定配置调试:
