c# - WPF:从不同的 UserControls 访问 ObservableCollection

标签 c# wpf user-controls observablecollection

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

我尝试了很多不同的方法,例如命令、复杂的数据绑定(bind)、在 MainWindow 中创建 ObservableCollection 等,但我没有让它起作用。

最佳答案

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

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

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

关于c# - WPF:从不同的 UserControls 访问 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476581/

相关文章:

c# - 通过 foreach 循环将值传递给用户控件

c# - 将值从页面传递到用户控件

c# - wpf 如何将转换器用于多绑定(bind)的子绑定(bind)?

wpf - 寻找带有复选框的 WPF ComboBox

c# - 为asp.net MVC3项目配置log4net

wpf - 签名时发生错误

c# - 检查是否安装了VLC

c# - 回发时添加了用户控件,但不显示

c# - 将 SQL Server 事务作为参数传递的最佳方法是什么

c# - XPTable 滚动出错