我對如何使用兩個不同的用戶控件創建主細節視圖有點困惑。如何使用MVVM中的兩個用戶控件創建主詳圖視圖?
有三種選擇,
選擇1
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
並保持兩視圖模型在App.Resources
但是通過這樣做,結合變得複雜了所有靜態資源來源標記代碼。
選擇2
CustomerViewModel
CustomerMasterView
CustomerDetailView
這兩種觀點都通過App.Resources共享同一個視圖模型,以及即使綁定代碼有太多的項目。
選擇3
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
兩個視圖的已設置的DataContext到其對應的視圖模型。現在這裏是小問題, CustomerMasterView具有Selector(ListBox或DataGrid或其他),其SelectedItem需要綁定到CustomerDetailViewModel的「Customer」屬性作爲雙向綁定。
它看起來不錯嗎?
<!-- CustomerMasterView -->
<ListBox
ItemsSource="{Binding CustomerList}"
SelectedItem="{Binding DataContext.Customer,ElementName=customerDetailView}"
/>
<local:CustomerDetailView
x:Name="customerDetailView"
/>
但是,這樣做,因爲它在我的UI代碼將更加依賴我不畏視圖模型的目的。
哪一個是最喜歡的方式還是有其他方法? 我應該創建嵌套視圖模型嗎?
我也在嘗試學習棱鏡,而且我對如何做到這一點沒有什麼困惑,任何幫助都將被評價。
相反,我使用ActiveItem的嵌套視圖模型,因爲詳細視圖模型已經有很多東西了。 – 2010-11-03 13:03:18