代码之家  ›  专栏  ›  技术社区  ›  Domenic

Silverlight MVVM:如何在为我的datagrid实现“添加新项”的同时避免污染我的模型?

  •  0
  • Domenic  · 技术社区  · 15 年前

    我有一个 DataGrid . 现在它绑定到一个 ObservableCollection<Foo>

    但现在我想实现 a user-friendly way to add a new item to the datagrid . 看来我需要修改一下 Foo 继承 IEditableObject INotifyPropertyChanged ,在我看来,从MVVM的角度来看,这有点令人讨厌——这些看起来更像是视图类型的实现细节。但不管怎样,没什么大不了的。

    (编辑:澄清; 在我的模型中,而不是在viewmodel中。)

    可观察收集<Foo> CollectionOfFoo 具有添加空白的逻辑 每当用户提交更改时(如在引用的博客文章中),将项目添加到集合的末尾。那玩意儿 肯定

    如何实现这样一个漂亮的UI来添加新项目,同时保持MVVM的灵活性?我在想,可能是我的集合周围的某种包装器实现了这一点,但我不确定如何使该包装器绑定回模型…:-s

    3 回复  |  直到 15 年前
        1
  •  2
  •   Rob Fonseca-Ensor    15 年前

    那东西绝对不属于我的模型。

    但它确实属于您的viewmodel。而且,您的datagrid应该绑定到一个可视的viewmodel类集合。

    在我看来(如果Foo是Model类),您需要编写一个FooViewModel类。

    另一种方法是在另一个控件中添加“新”项,可能编写一个表单,并在用户选择创建新行时将其显示在数据网格的顶部?

        2
  •  1
  •   user1228 user1228    15 年前
    1. 如果你一直说你的模型实现IPC有多“讨厌”,你会招致公众的愤怒 anemic model
    2. 没有理由不能在VM中使用ICommand来创建新的Foo实例进行编辑。
        3
  •  0
  •   ima    15 年前

    意思是——即使它污染了ViewModel(事实并非如此),现在做任何事情都为时已晚。