我有一个使用 Josh Smith ( http://msdn.microsoft.com/en-us/magazine/dd419663.aspx )的 MVVM 模式构建的应用程序。
当我在我的应用程序中打开了多个工作区时,我想捕捉切换工作区/选项卡的事件,以便我可以首先保存当前工作区的内容。我查看了 WorkspaceViewModel 和 ViewModelBase,但我不知道如何添加那个 EventHandler。
我有一个使用 Josh Smith ( http://msdn.microsoft.com/en-us/magazine/dd419663.aspx )的 MVVM 模式构建的应用程序。
当我在我的应用程序中打开了多个工作区时,我想捕捉切换工作区/选项卡的事件,以便我可以首先保存当前工作区的内容。我查看了 WorkspaceViewModel 和 ViewModelBase,但我不知道如何添加那个 EventHandler。
我在另一篇文章中找到了一个解决方案,我只需要稍微调整一下:在选项卡控件中处理多个数据网格的正确方法是什么,以便在选项卡更改时单元格离开编辑模式?
基本上我已经在生成不同工作区的 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);
}
您应该能够将选项卡的“当前”项绑定到模型中的变量。当这种情况发生变化时,做你的工作。