我想弄清楚如何在保持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. 处理DataTable.DataRow单元格更改事件
- 3. 如何更改Dojo数据网格中的单个单元格值
- 4. 捕获可编辑数据网格中更改的单元格
- 5. 如何使用MVVM更改数据网格或列表视图中的内容
- 6. 如何使Wpf数据网格单元格仅为数字
- 7. 如何更改数据网格的单元格中的文本颜色
- 8. LiveCode:如何更改数据网格中单元格的背景颜色
- 9. 如何使用FormatConditions根据单元格值与其他单元格的比较来更改单元格颜色?
- 10. 如何检查网格单元格更改事件
- 11. 如何从数据网格中的单元格获取数据
- 12. 如何以编程方式更改网格面板的单元格的网格
- 13. 如何使用TooltipDialog(和DropDownButton)更新Dojo网格单元格值
- 14. 如何使用php更改excel单元格或列格式?
- 15. 如何使用javascript更改表格单元格的id
- 16. 如何用pySpark在数据框中更改单元格的值?
- 17. 动态更新数据网格中的单个单元格
- 18. 如何根据在Silverlight中使用MVVM绑定的数据更改DataGrid的单元格?
- 19. 如何处理单击WPF网格
- 20. 使用Python处理单元格中的数据(Openrefine)
- 21. 如何处理空单元格
- 22. 如何处理tableview单元格值?
- 23. 如何使用C#基于单元格项目更改gridview单元格颜色
- 24. 使用AS3.0更改数据网格中的标题。更改Marquee的Datagrid单元格中的内容
- 25. 如何根据值更改更改单元格的颜色
- 26. 如何知道数据网格上的单元格提交更改后的更改值
- 27. WPF使用MVVM更改绑定格式
- 28. WPF - 如何将ICollectionView绑定到使用MVVM的数据网格
- 29. 如何更改表格中单击单元格的单元格背景颜色?
- 30. Silverlight的数据网格:改变某些单元格的颜色
这看起来不正确的做法对我来说。通常,网格将绑定到ViewModel中的某个集合对象,并且'CustomObject'将在您的模型中定义。你不能在那里做这样的操作。 另外,用户编辑不是唯一会改变模型对象属性的东西。 – 2016-10-13 13:12:10