我想弄清楚如何在保持MVVM设计模式的同时处理数据网格单元格中的更改。当用户更改单元格中的值时,必须根据新的单元格值更改一堆文件。我知道我可以如何轻松地在代码背后做到这一点,但有没有更清晰,更MVVM的方式来做到这一点与命令绑定?如何使用MVVM处理数据网格单元格更改?
5
A
回答
2
让我们假设你的DataGrid
的ItemsSource
必然,TwoWay
- 模式,以东西在你的ViewModel
,姑且称之为CustomObject
或什么的。
那么,让我们假设一个特定DataGridCell
被绑定到一个名为SomeProperty
属性,其声明如下:
private string someProperty;
public string SomeProperty {
get { return someProperty; }
set {
someProperty = value;
//Fire OnPropertyChanged here
}
}
将断点只是在集。然后,修改视图中的单元格:将达到断点。
这允许你模拟一个事件:每次调用这个集合,这意味着单元格将会改变,随着改变的过程做任何你想要的事情(例如你可以测试新的值,通过测试value
,或保留最后一个值,通过在行someProperty = value;
)
12
通常我会用Galasoft的交互触发器来做这件事。
<DataGrid IsReadOnly="False">
<e:Interaction.Triggers>
<e:EventTrigger EventName="CellEditEnding">
<GalaSoft_MvvmLight_Command:EventToCommand PassEventArgsToCommand="True" Command="{Binding CellEditEndingCommand}"/>
</e:EventTrigger>
</e:Interaction.Triggers>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
然后在ViewModel中创建通用的RelayCommand,其中泛型类型是相应EventArgs的类型。
RelayCommand<DataGridCellEditEndingEventArgs> CellEditEndingCommand {get; set;}
初始化:
CellEditEndingCommand = new RelayCommand<DataGridCellEditEndingEventArgs>(args=>DoSomething());
相关问题
- 1. 如何更改单元格列(在数据网格)
- 2. 如何在使用MVVM更改wpf数据网格的单元格中的值时引发事件?
- 3. 更改单元格数据
- 4. 处理DataTable.DataRow单元格更改事件
- 5. 如何更改Dojo数据网格中的单个单元格值
- 6. mvvm中的数据网格的单元格值
- 7. 更改easyui数据网格中的单元格颜色
- 8. 捕获可编辑数据网格中更改的单元格
- 9. 如何使用MVVM更改数据网格或列表视图中的内容
- 10. 如何实现JTable单元格事件处理程序更改
- 11. 如何处理GXT 2.2网格中单元格的点击?
- 12. JQuery使用单元格数据改造单元格
- 13. 如何使Wpf数据网格单元格仅为数字
- 14. 如何更改数据网格的单元格中的文本颜色
- 15. LiveCode:如何更改数据网格中单元格的背景颜色
- 16. VBA根据单元格数量更改单元格的颜色
- 17. 如何使用FormatConditions根据单元格值与其他单元格的比较来更改单元格颜色?
- 18. 根据单元格引用的单元格更改单元格的值
- 19. WPF数据网格与MVVM
- 20. ScrollIntoView WPF数据网格(MVVM)
- 21. WPF MVVM在数据网格
- 22. 如何更改列表网格中的单元格颜色
- 23. 如何检查网格单元格更改事件
- 24. 如何从数据网格中的单元格获取数据
- 25. 滚动单元格数据更改
- 26. 处理网页中的空单元格
- 27. 如何使用TooltipDialog(和DropDownButton)更新Dojo网格单元格值
- 28. 如何以编程方式更改网格面板的单元格的网格
- 29. 如何用AngularJS改变和处理单元格内部的数据?
- 30. 如何使用php更改excel单元格或列格式?
这看起来不正确的做法对我来说。通常,网格将绑定到ViewModel中的某个集合对象,并且'CustomObject'将在您的模型中定义。你不能在那里做这样的操作。 另外,用户编辑不是唯一会改变模型对象属性的东西。 – 2016-10-13 13:12:10