WPF:从不同的 UserControls 访问 ObservableCollection

WPF: Access ObservableCollection from different UserControls

我认为我的问题很简单,但我似乎找不到解决方案。 我有一个具有多个可能的视图(用户控件)的应用程序。 在 HomeView-UserControl 中,我创建了一个 ObservableCollection。

HomeView.xaml.cs:

private ObservableCollection<Food> _foodList = new ObservableCollection<Food>();
 public ObservableCollection<Food> FoodList
    {
        get { return _foodList; }
        set { _foodList = value; }
    }

我需要从我的 Statistics-UserControl(以及其他人)访问这个 ObservableCollection。

我尝试了很多不同的方法,例如命令、复杂的数据绑定、在 MainWindow 中创建 ObservableCollection 等,但我没有成功。

如果您想要同一数据的不同视图,那么您应该使用 CollectionViewSource

例如,假设您有两个 DataGrids dg1dg2 和一个 ObservableCollection oc ...您可以写 .. .

cvs1 = new CollectionViewSource();
cvs1 .Source = oc;
cvs1.View.Filter = Filter1;
dg1.ItemsSource = cvs1.View;

cvs2 = new CollectionViewSource();
cvs2 .Source = oc;
cvs2.View.Filter = Filter2;
dg2.ItemsSource = cvs2.View;

在这种情况下,Filter1Filter2 是 return true 对象匹配过滤条件时的函数...例如

private bool Filter1(object o)
{
     \return true if o has correct properties
}

您是否遵循 MVVM 模式?如果是这样,你的视图不应该包含模型的一部分(只是它的视图),它应该在你的视图模型中,如果需要可以与多个视图共享...

解决方案是让多个视图共享相同的数据 dontext。

Ron Beyer 致谢。