我想使用Datagrid(或List)和MVVM模式实现一种Addressbook / Contactbook。
类似于Outlook / Thunderbird,你有一个显示2-3个主要字段(例如姓氏姓氏)的联系人列表,当你双击某个联系人时,你会得到一个新的模态框显示此特定联系人的所有详细信息。
事实上,我的场景更类似于管理客户,订单和产品的应用程序。用户可以通过3个选项卡显示3个数据网格,一个显示客户列表,一个显示订单,一个显示产品。
然后在每个视图中,您可以添加(通过打开一个额外的对话框),删除(在某些条件下)一个对象。
每个对象与另一个对象有关系。
例如,在客户实例中,我列出了该客户的订单,并为每个订单列出了订购的产品列表。
由于几周/几个月,我正在网上阅读很多关于MVVM模式的内容,但不知何故,我感到困惑。到现在为止,我可以找到这样的样本。 (也许,我搜错了?)
我想使用MVVM模式实现类似的东西 我怎么能组织这样的申请呢? 有人可以帮忙,如何构建它? 某处有样品吗?
提前帮助你。
佛瑞德
答案 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://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包含“人员申请”。它非常简单,但允许您管理联系人列表。也许这是你的起点。