WPF DataGrid中所选索引的问题

时间:2013-02-13 07:09:45

标签: wpf mvvm binding datagrid selectedindex

我有一个wpf DataGrid。

在DataGrid上,所选索引绑定到ViewModel中的变量。

以下是代码:

<DataGrid DataContext="{Binding MyViewModel}" SelectedIndex="{Binding SelectedXIndex,Mode=TwoWay}"  ItemsSource="{Binding xList, Mode=TwoWay}" AutoGenerateColumns="False" GridLinesVisibility="Horizontal">
    <DataGrid.Columns>
      ...
    </DataGrid.Columns>
</DataGrid>

在ViewModel中,我有一个来自类X(Observable Collection)的项目列表,我有所选的索引变量:

    private int _selectedXIndex;
    public int SelectedXIndex
    {
        get { return _selectedXIndex; }
        set
        {
            _selectedXIndex = value;
            NotifyPropertyChanged("SelectedXIndex");
        }
    }

当我单击DataGrid中的一个项目时选择了索引更改,并且当我在ViewModel的约束中初始化它时,在DataGrid中进行了更改,但是当我在某个函数上初始化它时,只在ViewModel中更改而不是在数据网格:

  public void MoveDown()
    {
        SelectedXIndex++;         
    }

我无法理解为什么会这样!

修改

我在函数中添加了以下代码行:

xList[SelectedXIndex].Name = "Changest Name For Test";

它有效。

他更改了模型的选定项目行上的名称,但他没有在DataGird上显示所选项目就是那个。

1 个答案:

答案 0 :(得分:0)

除非我弄错了,否则通过使用SelectedXIndex ++,您不会再次重置SelectedXIndex,因此NotifyPropertyChanged不会被调用。

要么: SelectedXIndex = _selectedXIndex ++;

OR:

继续使用你拥有的东西,并在MoveDown中的增量后立即调用通知。