繁体   English   中英

从LINQ查询结果填充Observable Collection

[英]Populate Observable Collection from LINQ query results

我刚刚开始使用WPF MVVM,我试图通过绑定到视图模型中的ObservableCollection来填充数据网格视图。

我使用一个简单的LINQ查询从我的表中选择所有并填充我的可观察集合,但我的UI不会显示网格结果,大概是因为XAML必须绑定到公共属性?

private void getTableResults()
{
    var query = from c in LDB.myTable
                select c;
    var results = query;

    ObservableCollection<myTable> MyCollection = new ObservableCollection<myTable>(results);
    OnPropertyChanged("MyCollection");
}

这是我的XAML绑定:

<DataGrid ItemsSource="{Binding MyCollection}"

我的DataContext已设置,我已检查它是否与另一个硬编码属性绑定。 我哪里错了? 我在集合上设置了一个断点,所以知道它正在被结果填充。 如何公开从我的LINQ结果填充的公共ObservableCollection属性?

谢谢

刚添加,我的数据模型是MyTable,它是一个Entity Framework 4.0 edmx。

假设您的视图的数据上下文是您的viewmodel,那么是 - 您的xaml绑定应该是您的viewmodel的公共属性。 因此,将“MyCollection”属性声明为viewmodel的属性(不是getTbaleResults方法的本地属性)。

private ObservableCollection<myTable> _myCollection;
/// <summary>
/// Gets or sets the myTable collection.
/// </summary>
public ObservableCollection<myTable> MyCollection
{
    get { return _myCollection; }
    set
    {
        if (value == _myCollection) return;
        _myCollection= value;
        RaisePropertyChanged(() => MyCollection);
    }
}

(注意这是使用Prism所以raisePropertyChanged上的lambda,但其他框架有类似的实现)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM