知道是选择整行还是WPF DataGrid中的列

时间:2013-02-17 07:30:02

标签: wpf mvvm datagrid

如何判断DataGrid中的整行是否已选中,

或只有一列

BindingCommand,我希望保留MVVM)的原则。

2 个答案:

答案 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”