WPF:从不同的UserControls访问ObservableCollection

时间:2015-07-17 13:08:43

标签: c# wpf user-controls observablecollection

我认为我的问题很简单,但我似乎无法找到解决方案。 我有一个具有多个可能的视图(用户控件)的应用程序。 在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íkeCommands,复杂的DataBinding,在MainWindow中创建ObservableCollection等,但我没有让它工作。

1 个答案:

答案 0 :(得分:1)

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

例如,假设您有两个DataGrid s dg1dg2ObservableCollection oc ...您可以写... < / p>

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
}
相关问题