2012-12-06 53 views
12

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

public CustomerViewModel CustomerViewModel { get; set; } 

    public ContactsViewModel ContactsViewModel { get; set; } 

私はユーザーコントロールのXAMLからこれらのプロパティにアクセスするにはどうすればよい:

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

は今、私のShellViewModelは、プロパティなどの他のviewmodelsが含まれていますか?

DataContext="<<ParentWindowViewModel>.CustomerViewModel> 

私はこれをどのように行うことができますか?任意の助けをいただければ幸いです 『オブジェクト』タイプのデータコンテキストに

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

が、デバッガは 『CustomerViewModel』「プロパティを解決できませんと言う

答えて

13

をあなたは単に

DataContext="{Binding CustomerViewModel}" 
を使用する必要があります。私はすでに試しました。

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

関連する問題