【发布时间】:2015-05-08 21:36:28
【问题描述】:
我刚刚开始使用 MVVM 模式,并已决定将 MVVM Light 工具包用于我的 Windows Phone 应用程序。
我的问题是这样的:
我无法生成一个视图模型,该模型将视图正确绑定到具有不仅仅是原始类型的属性的模型——什么是构造模型和随附视图模型的有效方式,以便视图将绑定通过视图模型到模型,并在模型中的值发生变化时正确更新?
如中,我如何正确地从视图模型中引用模型的值?
这种模型的一个例子是一个类 Foo,它有一个属性 b,它是一个基元,还有另一个属性,a ,即 Bar 类型,具有自己的属性——基元或其他。
富:
public class Foo : ObservableObject
{
public Foo()
{
a = new Bar();
}
public const string aPropertyName = "a";
private Bar _a;
public Bar a
{
get
{
return _a;
}
set
{
Set(aPropertyName, ref _a, value);
}
}
public const string bPropertyName = "b";
private bool _b;
public bool b
{
get
{
return _b;
}
set
{
Set(bPropertyName, ref _b, value);
}
}
}
酒吧:
public class Bar : ObservableObject
{
public const string cPropertyName = "c";
private bool _c;
public bool c
{
get
{
return _c;
}
set
{
Set(cPropertyName, ref _c, value);
}
}
}
编辑:澄清一下,在视图模型中设置属性时,我应该这样做:
public const string cPropertyName = "c";
public bool c
{
get
{
return model.a.c;
}
set
{
model.a.c = value;
RaisePropertyChanged(cPropertyName);
}
}
还是有什么不同?
【问题讨论】:
-
我不确定您的意思...在您的 ViewModel 中有一个私有模型实例并通过它公开模型属性。如果您想公开其他复杂对象,请在同一个 ViewModel 中公开其属性或创建一个新对象。
-
@RodrigoSilva 请查看编辑。
-
不需要使用变量来保存属性名称,imo。而且我不明白你为什么不应该这样做。
-
@RodrigoSilva 适当地注意到了。
标签: c# wpf mvvm windows-phone-8.1 mvvm-light