Silverlight 将复杂的UI清晰高效地映射到对象

Silverlight 将复杂的UI清晰高效地映射到对象,silverlight,xaml,mvvm,user-interface,Silverlight,Xaml,Mvvm,User Interface,我目前有一个应用程序(在Silverlight中),使用mv vm,它有一个向数据库添加/编辑/删除各种条目的界面。一个很好的类比是,订购一辆车时,页面上有许多复选框和组合框,用于您希望该车包含的任何功能 我的应用程序有许多这样的UI元素(甚至包括带有TreeViewItemCheckBox的TreeViews),我想将它们映射到一个数据对象,该数据对象使用字典存储任何包含的选项 我的任务是找到将这些UI元素映射到视图模型的最佳方法,以便对它们进行编译并发送到数据库。我最初的方向是将每个元素映射

我目前有一个应用程序(在Silverlight中),使用mv vm,它有一个向数据库添加/编辑/删除各种条目的界面。一个很好的类比是,订购一辆车时,页面上有许多复选框和组合框,用于您希望该车包含的任何功能

我的应用程序有许多这样的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,你就知道了

有谁能想出更好的办法来解决这个问题吗


谢谢

为什么不让ViewModels负责这个逻辑?让它变得非常通用是很有吸引力的,但您总是会遇到一些复杂的UI,而这些UI并不完全适合字典。很多边缘案例。我建议:

public class BaseViewModel : ViewModel //Your basic viewmodel with INPC, etc
{
    public virtual void LoadModel(DictionaryTypeThing model) {}
    public virtual DictionaryTypeThing GetModel() {}
}
在这里,您可以将阅读和创建这些词典的责任交给ViewModel,在本例中,ViewModel是应用程序中最了解如何将所有内容组合在一起的一部分