我正在学习WPF MVVM模式。我被Binding CurrentCell
的{{1}}困住了。基本上我需要当前单元格的行索引和列索引。
datagrid
这是我的ViewModel
<DataGrid AutoGenerateColumns="True"
SelectionUnit="Cell"
CanUserDeleteRows="True"
ItemsSource="{Binding Results}"
CurrentCell="{Binding CellInfo}"
Height="282"
HorizontalAlignment="Left"
Margin="12,88,0,0"
Name="dataGrid1"
VerticalAlignment="Top"
Width="558"
SelectionMode="Single">
这是我的模特
private User procedureName = new User();
public DataGridCell CellInfo
{
get { return procedureName.CellInfo; }
//set
//{
// procedureName.CellInfo = value;
// OnPropertyChanged("CellInfo");
//}
}
在我的ViewModel private DataGridCell cellInfo;
public DataGridCell CellInfo
{
get { return cellInfo; }
//set
//{
// cellInfo = value;
// OnPropertyChanged("CellInfo");
//}
}
中始终是CellInfo
。我无法从null
中的currentcell
获取值。请让我知道在ViewModel中获取datagrid
的方法。
CurrentCell
答案 0 :(得分:14)
快速解决后,我注意到了一个非常简单的问题解决方案。
首先,有两个问题,而不是一个问题。您无法绑定CellInfo
类型的DataGridCell
,它必须为DataGridCellInfo
,因为xaml无法自行转换它。
其次在您的xaml中,您需要将Mode=OneWayToSource
或Mode=TwoWay
添加到CellInfo
绑定中。
以下是与原始代码
半关联的粗略示例XAML
<DataGrid AutoGenerateColumns="True"
SelectionUnit="Cell"
SelectionMode="Single"
Height="250" Width="525"
ItemsSource="{Binding Results}"
CurrentCell="{Binding CellInfo, Mode=OneWayToSource}"/>
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!"));
}
}
只是一个小小的提示 - 如果您调试应用程序并查看“输出”窗口,它实际上会告诉您绑定是否有任何问题。
希望这有帮助!
ķ。