WPF将数据绑定到ListBox多列

时间:2012-06-18 14:55:50

标签: wpf data-binding mvvm listbox

//你好!我需要将我的数据放入带有多个列的listBox中,我看到了这个链接stackoverflow.com...但是它谈到了所有事情而没有提到我可以在列中添加项目的方式,请你解释如何将数据项添加到列中非常感谢。我成功完成了以下事情

<ListView.View>
     <GridView>
         <GridView.Columns>
              <GridViewColumn Header="1" Width="100" DisplayMemberBinding="{Binding Path=Field1}" />
              <GridViewColumn Header="2" Width="100" DisplayMemberBinding="{Binding Path=Field2}" />
              <GridViewColumn Header="3" Width="100" DisplayMemberBinding="{Binding Path=Field3}" />
         </GridView.Columns>
     </GridView>
</ListView.View>`

 public sealed class MyListBoxItem
    {
        public string Field1 { get; set; }
        public string Field2 { get; set; }
        public string Field3 { get; set; }
    }
    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", Field3 = "Three" });
        }
    }

1 个答案:

答案 0 :(得分:0)

您需要在Window1.xaml.cs类的构造函数中设置包含DataContext控件的Window(比如它是Window1)的ListBox属性,如下所示:

public Window1()
{
    MyViewModel vm = new MyViewModel();

    this.DataContext = vm;
}

下一步是将ListBox控件的ItemsSource属性(在XAML内)设置为您在ViewModel类中可用的Items属性:

<ListBox ItemsSource="{Binding Path=Items}">
    <!--Other XAML-->
</ListBox>

此外,您还应该为INotifyPropertyChanged课程实施MyListBoxItem界面,其解释为here in MSDN。这是因为在WPF应用中实现了MVVM模式。要求您实施onewaytwoway数据绑定的更改通知才能生效(请参阅此内容以了解有关DataBinding的更多信息)。

以下是MVVM on MSDN的更详细说明。