【发布时间】:2013-02-13 07:09:44
【问题描述】:
我有一个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 类(可观察集合)中的项目列表,并且我有选定的索引变量:
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";
它有效。
他更改了模型的 Selected Item 所在行的名称,但他没有在 DataGird 上显示所选项目就是那个。
【问题讨论】:
-
在您显示的代码之外一定有某些东西导致了您的问题。创建了一个新应用程序,并添加了您在此处输入的内容以及
INotifyPropertyChanged实现、一些虚拟数据和一个触发 MoveDown 调用的按钮,它工作得很好
标签: wpf mvvm binding datagrid selectedindex