从不同的用户控件访问ObservableCollection

本文关键字:控件 访问 ObservableCollection 用户 | 更新日期: 2023-09-27 18:03:08

我认为我的问题很简单,但是我似乎找不到解决办法。我有一个应用程序与多个可能的视图(用户控件)。在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。

我尝试了很多不同的方法líke命令,复杂的数据绑定,在主窗口中创建ObservableCollection等,但我没有得到它的工作

从不同的用户控件访问ObservableCollection

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

例如,假设您有两个DataGrid s dg1, dg2ObservableCollection 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是函数,当对象符合过滤条件时返回true…如

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

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

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

感谢Ron Beyer。