我在wpf中创建了一个用户控件,它由一个文本框和一个列表视图组成。现在,我想将一个类对象绑定到我将使用此控件的表单中的列表视图。所以,基本上我想动态设置listview的绑定。
这可能很简单,但我是wpf的新手,这对我来说是一个巨大的任务。请为此提出解决方案。
答案 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的集合。当当! :)