Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的FastWPFGrid MVVM示例_Wpf - Fatal编程技术网

简单的FastWPFGrid MVVM示例

简单的FastWPFGrid MVVM示例,wpf,Wpf,我正在使用此处找到的FastWPFGrid控件: 我已经看过了示例应用程序,虽然在实际网格的实现方面有很多帮助,但对于如何使绑定工作起来,我有点不知所措。我试图将fastgrid的模型绑定到datacontext的一个属性GridViewModel,这又是一个从fastgrid viewmodelbase继承的视图模型 到目前为止,一切顺利。问题是,当数据更改时,通知不会发生。请参见下面的简单示例。在本例中,当我更改行数时,什么也不会发生。如果我手动刷新xaml(通过将绑定的名称更改为无效名称

我正在使用此处找到的FastWPFGrid控件:

我已经看过了示例应用程序,虽然在实际网格的实现方面有很多帮助,但对于如何使绑定工作起来,我有点不知所措。我试图将fastgrid的模型绑定到datacontext的一个属性GridViewModel,这又是一个从fastgrid viewmodelbase继承的视图模型

到目前为止,一切顺利。问题是,当数据更改时,通知不会发生。请参见下面的简单示例。在本例中,当我更改行数时,什么也不会发生。如果我手动刷新xaml(通过将绑定的名称更改为无效名称,然后返回),它就会更新。我只需要知道如何从代码触发notifypropertychanged

我希望能举一个非常简单的例子,大致如下:

我的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“尝试手动调用属性更改通知”-这没有告诉我您实际做了什么。你到底做了什么,在哪里做的,你到底是如何测试的?