我有一个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上显示所选项目就是那个。
答案 0 :(得分:0)
除非我弄错了,否则通过使用SelectedXIndex ++,您不会再次重置SelectedXIndex,因此NotifyPropertyChanged不会被调用。
要么: SelectedXIndex = _selectedXIndex ++;
OR:
继续使用你拥有的东西,并在MoveDown中的增量后立即调用通知。