我正在数据网格选择更改事件中执行检查。
如果满足条件,代码应该得到执行,并且所选项应该被突出显示(或获得焦点);如果不满足条件,则控件应返回,
以前选择的项应保持选定状态。
问题在于,如果条件不满足,则所选项不会更改(这是期望的工作方式),但焦点仍会转移到当前选择的单元格,因此,当前焦点所在位置的单元格是之前的单元格而不是触发该事件的单元格。
我已尝试过datagrid.dispatcher.invoke方法,但似乎没有起作用。 还尝试了设置datagrid.selectedindex = e.removeditem [0],这样会再次将控件置于选择更改事件中,从而进入连续循环。
请提供建议。
编辑:
问题在于,如果条件不满足,则所选项不会更改(这是期望的工作方式),但焦点仍会转移到当前选择的单元格,因此,当前焦点所在位置的单元格是之前的单元格而不是触发该事件的单元格。
我已尝试过datagrid.dispatcher.invoke方法,但似乎没有起作用。 还尝试了设置datagrid.selectedindex = e.removeditem [0],这样会再次将控件置于选择更改事件中,从而进入连续循环。
请提供建议。
编辑:
dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!IsDirty)
{
if (e.AddedItems.Count > 0)
{
SelectedProfile = e.AddedItems[0] as profile;
}
if (e.RemovedItems.Count > 0)
{
}
}
else
{
MessageBox.Show("Save the profile selected", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
}
DataTrigger
在DataGridRow
或DataGridCell
上设置IsReadOnly
。 - Rachel