从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>
我无法正确填写c#代码以填充我的列表中的项目?
答案 0 :(得分:13)
简而言之,这就是它的结合方式。
首先,定义一个保存数据以进行绑定的模型。
public sealed class MyListBoxItem
{
public string Field1 {get;set;}
public string Field2 {get;set;}
public string Field3 {get;set;}
}
现在,您必须拥有一个包含这些模型以进行绑定的类。这种类型通常称为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"};
}
}
在UI的代码隐藏中,在“视图”中,您实例化ViewModel并将其设置为View的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]的高评分问题。
另外,为了帮助调试绑定,请为详细数据绑定配置调试:
答案 1 :(得分:4)
您不必同时使用listbox和listview。您可以使用带有datatemplates的列表框,也可以将listview与gridviewcolumns一起使用。
检查以下链接,了解如何正确填充列表框
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