【发布时间】:2016-04-19 07:11:09
【问题描述】:
所以我的UserControl 中有一个DataGrid。它数据绑定到 My ViewModel 中的 observable collection。 ViewModel 实现了INotifyPropertyChanged 接口,并已在视图中适当地连接起来。
在我看来:
<DataGrid AutoGenerateColumns="False"
EnableRowVirtualization="True"
ItemsSource="{Binding ContributionCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<!-- DataGrid rows -->
/>
在 ViewModel 中:
private ObservableCollection<contribution> _contributionCollection;
public ObservableCollection<contribution> ContributionCollection
{
get
{
return _contributionCollection;
}
set
{
_contributionCollection= value;
OnPropertyChanged("ContributionCollection");
}
}
要发生的事情是这样的;单击特定按钮时,会触发对数据库的查询并返回一些结果。这些结果将显示在 Datagrid 中。
// Fired by an ICommand Property
public object Contributions_CommandExecute(object param)
{
var queryContributions = context.contributions.Where(c => c.member == Member);
return _contributionCollection = new ObservableCollection<contribution>(queryContributions);
}
但是数据网格总是空的。应用程序冻结了一会儿,表明后台发生了一些事情,但视图上实际上没有传达任何内容。事实上,唯一正常工作的情况是 ViewModel 构造函数在初始化时触发查询。但在那之后,它就不会再开火了。
知道我哪里出错了吗?
【问题讨论】:
标签: c# wpf datagrid observablecollection