我有一个简单的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/

10-12 02:55