我想弄清楚如何在保持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