Silverlight命令MVVM

时间:2011-03-25 10:35:50

标签: silverlight mvvm command viewmodel

我想'减少'我的ViewModel类中的命令数量。 我有一个ViewModel,它包含5个以上的列表(使用View上的Listbox来呈现,我将ObservableCollection绑定到它的ItemSource参数;还绑定了SelectedItem属性),每个列表都应该有自己的Add / Remove / etc按钮。

所以,它看起来像这样:

public class PersonViewModel : ViewModelBase
{
    Person _Person;
    private ObservableCollection<WorkPlaceViewModel> _WPlaces;
    private ObservableCollection<LanguageViewModel> _Languages;
    ... other lists

    private WorkPlaceViewModel _SelectedWorkPlaceView;
    ...

}

添加5x2命令会使ViewModel有点大。我可以将字符串硬编码到CommandParameter并使用我的ViewModel中的switch-case处理它,但这听起来像是黑客攻击。 :p 或者我应该为每个列表框创建一个删除命令,并将SelectedItem作为参数传递?

在MVVM中最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

为什么viewmodel中有一组viewmodel?什么是PersonViewModel应该完成。听起来像你需要将视图分解为多个视图并将它们绑定到不同的视图模型。您的视图和视图模型应尽可能小以减少耦合。

那就是说,我建议在每个可观察集合上添加/删除命令。正如您猜测的那样,使用硬编码字符串很麻烦。如果每个可观察集合都有自己的添加/删除,这将允许每个集合使用不同的逻辑,并且更易于维护。

您可以从ViewModel发布更多代码并稍微描述一下应用程序吗?这将有助于我们确定是否可以做出更好的设计决策。