0

Josh Smith ( http://msdn.microsoft.com/en-us/magazine/dd419663.aspx ) の MVVM パターンを使用してアプリケーションをビルドしました。

アプリで複数のワークスペースを開いている場合、現在のワークスペースのコンテンツを最初に保存できるように、ワークスペース/タブを切り替えるイベントをキャッチしたいと考えています。WorkspaceViewModel と ViewModelBase を調べましたが、その EventHandler を追加する方法がわかりません。

4

2 に答える 2

1

別の投稿で解決策を見つけました。少し調整する必要がありました。タブが変更されたときにセルが編集モードを終了するように、タブ コントロールで複数のデータグリッドを処理する適切な方法は何ですか?

基本的に、さまざまなワークスペースを生成する 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); 
    }
于 2012-08-30T13:13:37.203 に答える
0

タブの「Current」アイテムをモデルの変数にバインドできるはずです。これが変わったら、あなたの仕事をしてください。

于 2012-06-27T16:26:34.340 に答える