C# WPF:从不同的用户控件访问ObservableCollection
我认为我的问题很简单,但我似乎找不到解决办法。 我有一个具有多个可能视图(用户控件)的应用程序。 在HomeView UserControl中,我创建了一个ObservableCollection HomeView.xaml.cs: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>
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
sdg1
,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集合),并希望这些更改在我处于第二个视图时保持不变,该怎么办?您应该能够使用调用的方法在视图模型中更改视图,在视图之间传递状态数据(模型数据)。例如,可以在第二个视图模型上添加参数,从第一个视图中获取数据,并传入集合。不知道这是否清楚…谢谢!更改当前视图时,我无法传递参数,因为我在主窗口中更改了它?总之,您解决了我的问题,我希望将您的注释设置为解决方案