2009-05-15 9 views
0

MVPに関するドキュメントをCodePlexからダウンロードしましたが、この図はわかりません。文書でWPF MVVMとの混同

alt text http://img194.imageshack.us/img194/3959/diagram.png

、ContactViewはContactViewModelにそののDataContextを設定したことがないので、この図はContactViewはDataContextの経由ContactViewModelを参照することが示されている理由を私は理解していません。

ContactView.DataContextを設定するのはわかりませんが、この点が欠落していますか?

答えて

2

あなたはジョシュ・スミスによってthis articleをお読みください、すべては接点がリストビューまたは類似した何かに示されている場合には、具体的にDataContextを設定する必要はないかもしれない...その後

1

をより明確に見えるだろう。

リストビューのdatacontextがMainViewModelのContactsプロパティに設定されている場合、各アイテムのdatacontextは特定のContactViewModelオブジェクトに自動的に設定され、ContactViewコントロールを使用して表示されるアイテムをトリガすることができます。テンプレートのバインディングは、ドキュメントの初期に設定されていました。


申し訳ありませんが、私はcodeplexに問題があり、ダウンロードするドキュメントを取得できませんでした。コードのブロックダイアグラムが私の疑いを確認した直前に:

<Grid> 
    <ListBox ItemsSource="{Binding Contacts}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <views:ContactView /> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

のListBoxがコンタクトを拘束されているためのObservableCollectionそれぞれのListItemは、そのDataContextのは、それがバインドされている特定のオブジェクトに設定されています。 DataTemplateは、各アイテムをContactViewコントロールとして表示するように設定されています。したがってContactViewのDataContextはコレクションから正しいContactオブジェクトに設定されますが、実際にプロパティを実際に設定する必要はありません。