我正在執行數據網格選擇更改事件內部的檢查。 如果我的條件滿足,代碼應該被執行,選定的項目應該被高亮顯示(或獲得焦點),如果條件不滿足,控件應該返回並且之前選擇的項目應該保持被選中。WPF DataGrid SelectionChanged事件取消單元格焦點問題
這裏發生的情況是,如果不滿足條件,選定的項目不會改變(它按照需要工作),但焦點仍然轉移到現在選擇的單元格,所以單元格選擇的項目是前一個單元格,而焦點是發射事件的單元格。
我試過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;
}
}
你基於這種情況的條件是什麼?你如何取消選擇?有可能你可以通過在DataGridRow或DataGridCell上設置「IsReadOnly」的DataTrigger來代替 – Rachel
該標誌在其他函數中獲取它的值以及該標誌是否設置,我們希望datagrid單元改變,我限制了細胞的變化,但不能限制焦點,在任何情況下都會轉移到點擊的新細胞。取消註冊selectchanged事件不起作用 –
在選擇更改的事件中使用的DataGrid.Dispatcher.BeginInvoke()前面的單元格根據需要突出顯示,但單擊的單元格可編輯 –