Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:从不同的用户控件访问ObservableCollection_C#_Wpf_User Controls_Observablecollection - Fatal编程技术网

C# WPF:从不同的用户控件访问ObservableCollection

C# WPF:从不同的用户控件访问ObservableCollection,c#,wpf,user-controls,observablecollection,C#,Wpf,User Controls,Observablecollection,我认为我的问题很简单,但我似乎找不到解决办法。 我有一个具有多个可能视图(用户控件)的应用程序。 在HomeView UserControl中,我创建了一个ObservableCollection HomeView.xaml.cs: private ObservableCollection<Food> _foodList = new ObservableCollection<Food>(); public ObservableCollection<Food>

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

HomeView.xaml.cs:

private ObservableCollection<Food> _foodList = new ObservableCollection<Food>();
 public ObservableCollection<Food> FoodList
    {
        get { return _foodList; }
        set { _foodList = value; }
    }
private observedcollection\u foodList=new observedcollection();
公众可观察收集食物清单
{
获取{return\u foodList;}
设置{u foodList=value;}
}
我需要从我的Statistics用户控件(以及其他控件)访问此ObservableCollection


我尝试了很多不同的方法,比如líke命令、复杂的数据绑定、在主窗口中创建ObservableCollection等等,但都没有成功。

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

例如,假设您有两个
DataGrid
s
dg1
dg2
,以及一个
observedcollection
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;
在这种情况下,
Filter1
Filter2
是当对象处理筛选条件时返回
true
的函数。。。乙二醇

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

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

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


积分归Ron Beyer。

您是否遵循MVVM模式?如果是这样,您的视图不应该包含模型的部分(仅包含模型的视图),它应该位于视图模型中,如果需要,可以与多个视图共享……谢谢,这已经帮助了我。但是,如果我编辑HomeViewModel中的某些字段(如Observable集合),并希望这些更改在我处于第二个视图时保持不变,该怎么办?您应该能够使用调用的方法在视图模型中更改视图,在视图之间传递状态数据(模型数据)。例如,可以在第二个视图模型上添加参数,从第一个视图中获取数据,并传入集合。不知道这是否清楚…谢谢!更改当前视图时,我无法传递参数,因为我在主窗口中更改了它?总之,您解决了我的问题,我希望将您的注释设置为解决方案