如何判断DataGrid中的整行是否已选中,
或只有一列
(Binding
或Command
,我希望保留MVVM
)的原则。
答案 0 :(得分:1)
最后,我自己找到了解决方案。
(非常奇怪,我在一次精彩的搜索中一无所获。)
这就是我的所作所为:
我将两个DataGrid绑定事件绑定到ViewModel中的命令。
<i:EventTrigger EventName="BeginningEdit">
<i:InvokeCommandAction CommandParameter="{Binding CurrentCell.Column.DisplayIndex, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Command="{Binding DataContext.ColBeginEdit, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
</i:EventTrigger>
<i:EventTrigger EventName="CellEditEnding">
<i:InvokeCommandAction CommandParameter="{Binding CurrentCell.Column.Header, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Command="{Binding DataContext.ColEndEdit, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
</i:EventTrigger>
在视图模型中,我为命令调用了两个函数:
public void CoulmnBeginEdit(object obj)
{
int i;
if (Int32.TryParse(obj.ToString(), out i))
{
if (i > 0)
this.CurrentCellEdit = i;
}
}
public void CoulmnEndEdit(object obj)
{
this.CurrentCellEdit = 0;
}
如果CurrentCellEdit大于0表示行编辑,否则不行。
我在SelectedIndex上的行号,根据CurrentCellEdit我也知道行中的哪一列编辑。
我希望找到一种更简单的方法,但这是我想到的唯一解决方案,保持MVVM的原则,我还在努力......
答案 1 :(得分:0)
您可以将属性SelectionUnit设置为“FullRow”