Mat*_*ttP 1 wpf binding listbox multiple-columns
从WPF开始,我仍然在努力理解数据绑定功能.
我试图使用多列列表框,我的XAMl看起来像这样:
<ListBox Name="RecordList">
<ListView Name="RecordListView">
<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>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
我只是不能正确填写c#代码从我的列表中填充项目?
小智 13
简而言之,这就是它的结合方式.
首先,定义一个保存数据以进行绑定的模型.
public sealed class MyListBoxItem
{
public string Field1 {get;set;}
public string Field2 {get;set;}
public string Field3 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,您必须拥有一个包含这些模型以进行绑定的类.这种类型通常称为ViewModel; 它根据View中的用户输入向View提供信息以进行绑定.它的公共属性通常是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"};
}
}
Run Code Online (Sandbox Code Playgroud)
在UI的代码隐藏中,在"视图"中,您实例化ViewModel并将其设置为View的DataContext.
public MyView()
{
this.DataContext = new MyViewModel();
}
Run Code Online (Sandbox Code Playgroud)
这很重要,因为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>
Run Code Online (Sandbox Code Playgroud)
为了更好地理解整个过程,请在此处搜索标记为[MVVM]的高评价问题.
另外,为了帮助调试绑定,请为详细数据绑定配置调试:

您不必同时使用列表框和列表视图。要么使用带有数据模板的列表框,要么使用带有网格视图列的列表视图。
检查以下链接以了解如何正确填充列表框
http://www.c-sharpcorner.com/uploadfile/mahesh/wpflistbox08252008100659am/wpflistbox.aspx
http://www.wpftutorial.net/ListBoxDataTemplate.html
http://www.codeproject.com/KB/WPF/CustomListBoxLayoutInWPF.aspx
我强烈建议您浏览以下链接并掌握 wpf 中的数据绑定和数据模板化的坚实基础
http://msdn.microsoft.com/en-us/library/ms742521.aspx
http://www.codeproject.com/KB/WPF/GuidedTourWPF_4.aspx
http://www.wpftutorial.net/DataTemplates.html