如何使用MVVM模式在WPF数据网格中绑定CurrentCell
我正在学习WPF MVVM模式。 我陷入了datagrid
Binding CurrentCell
。 基本上我需要当前单元格的行索引和列索引。
这是我的ViewModel
private User procedureName = new User(); public DataGridCell CellInfo { get { return procedureName.CellInfo; } //set //{ // procedureName.CellInfo = value; // OnPropertyChanged("CellInfo"); //} }
这是我的模特
private DataGridCell cellInfo; public DataGridCell CellInfo { get { return cellInfo; } //set //{ // cellInfo = value; // OnPropertyChanged("CellInfo"); //} }
在我的ViewModel中, CellInfo
始终为null
。 我无法从datagrid
的currentcell
获取值。 请让我知道一种在ViewModel中获取CurrentCell
的方法。
if (CellInfo != null) { MessageBox.Show("Value is" + CellInfo.Column.DisplayIndex.ToString()); }
快速解决后,我注意到了一个非常简单的问题解决方案。
首先,有两个问题而不是一个问题。 你不能绑定DataGridCell
类型的CellInfo
,它需要是DataGridCellInfo
因为xaml CellInfo
转换它。
其次在你的xaml中你需要将Mode=OneWayToSource
或Mode=TwoWay
到你的CellInfo
绑定中。
这是一个与原始代码半相关的粗略示例
XAML
VM
private DataGridCellInfo _cellInfo; public DataGridCellInfo CellInfo { get { return _cellInfo; } set { _cellInfo = value; OnPropertyChanged("CellInfo"); MessageBox.Show(string.Format("Column: {0}", _cellInfo.Column.DisplayIndex != null ? _cellInfo.Column.DisplayIndex.ToString() : "Index out of range!")); } }
只是一个小小的提示 – 如果您调试应用程序并查看“输出”窗口,它实际上会告诉您绑定是否有任何问题。
希望这可以帮助!
K.