gpt4 book ai didi

c# - 如何使用 MVVM 模式在 WPF 数据网格中绑定(bind) CurrentCell

转载 作者:太空狗 更新时间:2023-10-29 22:13:54 26 4
gpt4 key购买 nike

我正在学习 WPF MVVM 模式。我被困在 datagridBinding CurrentCell 中。基本上我需要当前单元格的行索引和列索引。

<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">

这是我的 View 模型

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());
}

最佳答案

快速浏览后,我注意到您的问题有一个非常简单的解决方案。

首先这里有两个问题而不是一个。您不能绑定(bind) DataGridCell 类型的 CellInfo,它必须是 DataGridCellInfo,因为 xaml 无法自行转换它。

其次,在您的 xaml 中,您需要将 Mode=OneWayToSourceMode=TwoWay 添加到您的 CellInfo 绑定(bind)。

这是一个与您的原始代码半相关的粗略示例

XAML

<DataGrid AutoGenerateColumns="True"
SelectionUnit="Cell"
SelectionMode="Single"
Height="250" Width="525"
ItemsSource="{Binding Results}"
CurrentCell="{Binding CellInfo, Mode=OneWayToSource}"/>

虚拟机

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!"));
}
}

只是一个小提示 - 如果您调试您的应用并查看“输出”窗口,它实际上会告诉您您的绑定(bind)是否存在任何问题。

希望这对您有所帮助!

K.

关于c# - 如何使用 MVVM 模式在 WPF 数据网格中绑定(bind) CurrentCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com