2009-12-02 60 views
0

我目前有一個使用mv-vm的應用程序(在Silverlight中),該應用程序具有添加/編輯/刪除各種條目到數據庫的界面。一個很好的比喻是訂購帶有許多複選框和組合框的汽車的頁面,用於您希望汽車包含的任何功能。乾淨而高效地將複雜的UI映射到對象

我的應用程序有很多這些UI元素(甚至包括帶有TreeViewItemCheckBox的TreeViews),我想映射到使用字典存儲任何包含的選項的數據對象。

我的努力是找到將這些UI元素映射到我的視圖模型以便將它們編譯併發送到數據庫的最佳方法。我最初的方向是將每個元素映射到我的視圖模型中的一個屬性,但它看起來沉重而笨拙。

<TreeView> 
    <TreeViewItem> 
     <TreeViewItem.Header> 
      <TreeViewItemCheckBox Content="All Features" IsChecked="{Binding AllFeaturesChecked}"/> 
     </TreeViewItem.Header> 
     <TreeViewItemCheckBox Content="Feature1" IsChecked="{Binding Feature1Checked}"/> 
     <TreeViewItemCheckBox Content="Feature2" IsChecked="{Binding Feature2Checked}"/> 
     <TreeViewItemCheckBox Content="Feature3" IsChecked="{Binding Feature3Checked}"/> 
     <TreeViewItemCheckBox Content="Feature4" IsChecked="{Binding Feature4Checked}"/> 
    </TreeViewItem> 
</TreeView> 

...乘以10,你就明白了。

任何人都可以想出一個更好的方法來解決這個問題嗎?

謝謝!

回答

1

爲什麼不讓你的ViewModel負責這個邏輯?它非常具有通用性,但是你總是會遇到一些複雜的UI,它不適合字典。很多邊緣情況。我會提出這樣的:

public class BaseViewModel : ViewModel //Your basic viewmodel with INPC, etc 
{ 
    public virtual void LoadModel(DictionaryTypeThing model) {} 
    public virtual DictionaryTypeThing GetModel() {} 
} 

這裏你給人閱讀的責任和創造這些字典的視圖模型,在這種情況下是如何拼湊在一起的一切最瞭解你的一塊應用程序。