简单的FastWPFGrid MVVM示例
我正在使用此处找到的FastWPFGrid控件: 我已经看过了示例应用程序,虽然在实际网格的实现方面有很多帮助,但对于如何使绑定工作起来,我有点不知所措。我试图将fastgrid的模型绑定到datacontext的一个属性GridViewModel,这又是一个从fastgrid viewmodelbase继承的视图模型 到目前为止,一切顺利。问题是,当数据更改时,通知不会发生。请参见下面的简单示例。在本例中,当我更改行数时,什么也不会发生。如果我手动刷新xaml(通过将绑定的名称更改为无效名称,然后返回),它就会更新。我只需要知道如何从代码触发notifypropertychanged 我希望能举一个非常简单的例子,大致如下: 我的Xaml:简单的FastWPFGrid MVVM示例,wpf,Wpf,我正在使用此处找到的FastWPFGrid控件: 我已经看过了示例应用程序,虽然在实际网格的实现方面有很多帮助,但对于如何使绑定工作起来,我有点不知所措。我试图将fastgrid的模型绑定到datacontext的一个属性GridViewModel,这又是一个从fastgrid viewmodelbase继承的视图模型 到目前为止,一切顺利。问题是,当数据更改时,通知不会发生。请参见下面的简单示例。在本例中,当我更改行数时,什么也不会发生。如果我手动刷新xaml(通过将绑定的名称更改为无效名称
主视图模型(我表单的datacontext)
public SummaryGridViewModel SummaryVm{get;set;}
//当我知道行计数已更改(例如)时触发此事件
void OnRunListPropertyChanged(Message.RunListPropertyChanged obj)
{
//**这是我需要帮助才能更新视图的地方
}
网格视图模型
公共类摘要GridViewModel:FastGridModelBase
{
公共摘要GridViewModel(RunListCalculationQueueManager运行列表)
{
运行列表=运行列表;
}
RunListCalculationQueueManager运行列表{get;}
公共覆盖int ColumnCount=>15;
公共覆盖int RowCount=>
RunList.ActiveRun==null?0:RunList.BaselineRun==null?1:3;
}
因此,主视图模型中的事件将按预期触发,但视图中不会反映任何更改
我不一定要修复这段代码,但是我尝试做的一个简单的工作示例将非常好。找到了解决方案,它非常简单,真的- FastGridModelBase公开了几个notify方法。召唤
SummaryVM.NotifyRefresh
导致通知被触发,并且一切正常。是什么导致通知被触发的?在正常工作的viewmodel中,如果将新值指定给属性
Foo
,则setter将引发PropertyChanged
事件,指定属性名称的“Foo”
。如果向ObservaleCollection添加或删除一项,则会引发其CollectionChanged
事件。您是说您将一个项目添加到RunList
,还是在RunList
中更改项目的ActiveRun
属性,并且没有人为RowCount
引发PropertyChanged
事件?嗯,我看不到任何机制会引发任何此类通知。可能控件不支持您尝试执行的操作“使用MVVM设计模式,但(出于性能原因)不使用经典的WPF绑定”。我不知道它用什么。坦白说。您不应该绑定大型数据集。@Ed Yes-当我更改ActiveRun属性时,更改属性时不会发生任何事情。我得出了与您相同的结论,因为没有任何东西会引发通知,所以应该有一种手动引发通知的方法-我尝试手动调用属性更改通知,但这似乎也没有任何作用。我在这里发布是因为我希望熟悉该控件的人知道如何让它发出通知,因为该控件的文档非常糟糕。@Tim“尝试手动调用属性更改通知”-这没有告诉我您实际做了什么。你到底做了什么,在哪里做的,你到底是如何测试的?