別の投稿で解決策を見つけました。少し調整する必要がありました。タブが変更されたときにセルが編集モードを終了するように、タブ コントロールで複数のデータグリッドを処理する適切な方法は何ですか?
基本的に、さまざまなワークスペースを生成する TabControl の PreviewMouseDown に EventHandler を追加しました。
private void TabControl_PreviewMouseDown(object sender, MouseButtonEventArgs e) {
MainWindow_VM dc = (MainWindow_VM)this.DataContext;
if (IsUnderTabHeader(e.OriginalSource as DependencyObject))
//Do what need to be done before switching workspace
// in my case, switch the focus to a dummy control so the objectContext would save everything, even the currently focused textbox
}
private bool IsUnderTabHeader(DependencyObject control)
{
if (control is TabItem)
{
return true;
}
DependencyObject parent = VisualTreeHelper.GetParent(control);
if (parent == null)
return false;
return IsUnderTabHeader(parent);
}