将类对象绑定到wpf中的listview

时间:2012-04-30 06:46:53

标签: c# wpf vb.net listview data-binding

我在wpf中创建了一个用户控件,它由一个文本框和一个列表视图组成。现在,我想将一个类对象绑定到我将使用此控件的表单中的列表视图。所以,基本上我想动态设置listview的绑定。

这可能很简单,但我是wpf的新手,这对我来说是一个巨大的任务。请为此提出解决方案。

1 个答案:

答案 0 :(得分:5)

您需要将ListView的{​​{1}}属性绑定到类实例的集合(我建议使用ObservableCollection)。例如,您可以将集合放入ItemsSource的{​​{1}}。然后绑定将只是

ListView

创建一个类以包含此集合以及DataContext可能需要的任何其他对象并将此类的实例传递给<ListView ItemsSource={Binding} .../> 的{​​{1}}更有用。这指的是MVVM模式。

修改

您可以在代码隐藏或xaml中设置DataContext。假设我们有一个集合的类:

UserControl

以下是如何在代码中设置UserControl的DataContext:

UserControl

其中userControl是UserControl的一个实例。

以下是xaml中的操作方法:

DataContext

两种变体完全相同。请注意public class ViewModel { public ViewModel() { Products = new ObservableCollection<Product>() { new Product("book"), new Product("chair"), new Product("table"), new Product("bookshelf"), } } ObservableCollection<Product> Products { get; set; } } 表示userControl.DataContext = new ViewModel(); 属性设置为“Products”,并且将在ListView的DataContext中搜索此路径。如果没有显式设置ListView的DataContext(如上面提到的那样),它的DataContext与其Parent的DataContext相同。如果未设置父级的DataContext,则它与父级的父级DataContext相同,依此类推。因此,在这种情况下,ListView的DataContext与UserControl的DataContext相同,并且是一个ViewModel类实例,它包含Products的集合。当当! :)