12

ネストされたビューモデルでMVVMパターンを使用してアプリケーションを作成しようとしています。マスタービューモデルはShellViewであり、それぞれが独自のビューモデルを持つ3つのUserControlを含みます。ShellView ViewModelは、次のようにコードビハインドで作成されます。

public ShellView()
{
    InitializeComponent();
    _shellViewModel = new ShellViewModel();
    DataContext = _shellViewModel;
}

これで、ShellViewModelに他のViewModelがプロパティとして含まれます。

    public CustomerViewModel CustomerViewModel { get; set; }

    public ContactsViewModel ContactsViewModel { get; set; }

UserControlsのXAMLからこれらのプロパティにアクセスするにはどうすればよいですか?私は次のようなことができるようになりたいです:

DataContext="<<ParentWindowViewModel>.CustomerViewModel>

どうすればこれを達成できますか?私はすでに試しました:

DataContext="{Binding DataContext.CustomerViewModel, RelativeSource={RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, Path=DataContext.CustomerViewModel}">

しかし、デバッガーは「タイプ'object'のデータコンテキストでプロパティ'CustomerViewModel'を解決できません。助けていただければ幸いです。

4

1 に答える 1

13

あなたは単に使用する必要があります

DataContext="{Binding CustomerViewModel}"

コンストラクターで既に設定DataContext = _shellViewModel;しているので、ウィンドウ全体のデータコンテキストをに設定しますShellViewModel。したがって、バインディングを定義すると、定義したデータコンテキスト内のパスが検索されます。そのため、上記のバインディングはインスタンスのCustomerViewModelプロパティを検索しShellViewModelます。

于 2012-12-06T09:37:22.510 に答える