我有一个简单的ViewModel像:
public class MainViewModel {
ObservableCollection<Project> _projects;
public MainViewModel() {
// Fill _projects from DB here...
ProjectList.Source = _projects;
ProjectList.Filter = ...;
}
public CollectionViewSource ProjectList { get; set; }
}
我在构造函数中将窗口的DataContext设置为该ViewModel的新实例:
public MainWindow() {
this.DataContext = new MainViewModel();
}
然后在Xaml中,我尝试将ListBox的ItemsSource绑定(bind)到该ProjectList属性。
像这样仅绑定(bind)ItemsSource无效:
<ListBox ItemsSource="{Binding ProjectList}" ItemTemplate="..." />
但是,如果我首先重新建立DataContext的基础,则可以正常工作:
<ListBox DataContext="{Binding ProjectList}" ItemsSource="{Binding}" ItemTemplate="..." />
第一种方法不能正常工作吗?我可能做错了什么?
最佳答案
如果您使用的是CollectionViewSource
,则需要将ItemsSource
绑定(bind)到ProjectList.View
而不是ProjectList
。那应该解决您的问题。
关于wpf - XAML绑定(bind)到ViewModel上的CollectionViewSource属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3009454/