Bra*_*rap 9 c# silverlight mvvm windows-phone-7
我之前从未使用过MVVM,所以我可能会遗漏一些明显的东西.当我创建一个新的Panorama应用程序时,已经有一个包含ItemViewModel和MainViewModel的ViewModel文件夹.
我认为"MainViewModel.cs"是组织全景图的文件.但是,在MainViewModel中,它有以下行:
public MainViewModel()
{
this.Items = new ObservableCollection<ItemViewModel>();
}
Run Code Online (Sandbox Code Playgroud)
ItemViewModel与全景图没有交互.然后将这些实例化为:
this.Items.Add(new ItemViewModel()
{
LineOne = "first line",
LineTwo = "second line",
LineThree = "third line"
});
Run Code Online (Sandbox Code Playgroud)
为什么ItemViewModel不是一个'模型'?它实现了INotifyPropertyChanged,但出于什么目的?我会认为MainViewModel中的ObservableCollection足以通知任何更改,如此处所示
谢谢
Arn*_*psa 13
差异很简单.
模型持有业务逻辑.
视图模型包含表示逻辑,并且还经过整形以适合视图.
在您的情况下 - 视图模型实现INotifyPropertyChanged.这是纯粹的表达逻辑.
模型不负责通知某个特定的UI有什么变化,它负责转移发票,计算工资等.
有时(当模型很简单时),这种抽象不是必需的.
一些维基报价:
模型:与经典MVC模式一样,模型指的是
(a)表示真实状态内容的对象模型(面向对象的方法),或
(b)表示该内容的数据访问层(数据 -中心方法).
ViewModel:ViewModel是一个"视图模型",意味着它是View的抽象,也用于View和Model之间的数据绑定.它可以被视为控制器(在MVC模式中)的一个专门方面,它充当数据绑定器/转换器,将模型信息更改为视图信息并将命令从视图传递到模型中.ViewModel公开公共属性,命令和抽象.ViewModel被比作数据的概念状态,而不是模型中数据的真实状态.
Tho*_*ler 11
它是所有MV [x]架构背后的一般概念,尽管是MVC,MVP或MVVM:
ObservableCollection')以及用户表示(例如,考虑不同日期顺序或不同语言的不同小数点).在您的简单示例中,这可能看起来有点过分,但普通的商业软件将拥有数十甚至数百个这样的MV [x]三元组,如果没有这个,您就无法维护一个干净的架构.
回答你的问题:你的例子中只有一些布线代码来设置所描述的架构.
HTH!托马斯
该ObservableCollection当项目被添加或从列表中删除,但会通知INotifyPropertyChanged,如果你想通知当这些属性发生改变的ItemViewModel是必要的.
| 归档时间: |
|
| 查看次数: |
6032 次 |
| 最近记录: |