如何使用MVVM实现这样的应用程序

时间:2011-01-13 07:51:54

标签: wpf mvvm

我想使用Datagrid(或List)和MVVM模式实现一种Addressbook / Contactbook。

类似于Outlook / Thunderbird,你有一个显示2-3个主要字段(例如姓氏姓氏)的联系人列表,当你双击某个联系人时,你会得到一个新的模态框显示此特定联系人的所有详细信息。

事实上,我的场景更类似于管理客户,订单和产品的应用程序。用户可以通过3个选项卡显示3个数据网格,一个显示客户列表,一个显示订单,一个显示产品。
然后在每个视图中,您可以添加(通过打开一个额外的对话框),删除(在某些条件下)一个对象。 每个对象与另一个对象有关系。 例如,在客户实例中,我列出了该客户的订单,并为每个订单列出了订购的产品列表。

由于几周/几个月,我正在网上阅读很多关于MVVM模式的内容,但不知何故,我感到困惑。到现在为止,我可以找到这样的样本。 (也许,我搜错了?)

我想使用MVVM模式实现类似的东西 我怎么能组织这样的申请呢? 有人可以帮忙,如何构建它? 某处有样品吗?

提前帮助你。

佛瑞德

2 个答案:

答案 0 :(得分:2)

1)This video帮助我理解了MVVM的基础知识。

2)在SO上搜索“MVVM Master Detail”。

3)“删除(在某些条件下)对象”:阅读命令和中继命令:

private RelayCommand _delete;
public ICommand Delete
{
    get
    {
        return _delete ?? (_delete = new RelayCommand(action => DoDelete(), condition => CanDelete));
    }
}

private bool CanDelete
{
    get { return true; // your condition }
}

4)“然后在每个视图中,您可以添加(通过打开一个额外的对话框)”     “每个对象都与另一个对象有关系” - 您需要让其他ViewModel知道更改。典型的解决方案是使用Mediator模式。请参阅以下文章:

http://sachabarber.net/?p=477

http://marlongrech.wordpress.com/2008/03/20/more-than-just-mvc-for-wpf/

http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

编辑:刚刚发现另一个漂亮而简单的MVVM示例,其中包括排序过滤和列表导航:

http://marlongrech.wordpress.com/2008/11/22/icollectionview-explained/

答案 1 :(得分:0)

This article about Catel包含“人员申请”。它非常简单,但允许您管理联系人列表。也许这是你的起点。