对于XAML视图,我将它挂钩到this.ViewModel.PropertyChanged
,如此:
ViewModel.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "CurrentImage")
DoStuff();
};
这是因为XAML不够灵活,无法在没有代码隐藏的情况下直接实现我喜欢的东西,也因为它的代码纯粹与WinRT / XAML相关而不是核心便携式项目。
但是在视图的构造函数中,ViewModel
属性为null,因此可以解决这个问题:
this.Loaded += (s2, e2) =>
ViewModel.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "CurrentImage")
DoStuff();
};
我认为这(除了使用字符串来引用属性)可能不是很干净,并且可能应该有更好的方法来实现我喜欢的东西。有更理想的方法吗?
答案 0 :(得分:3)
这可以使用MvxPropertyChangedListener完成,如Stuart's comment中所述:
new MvxPropertyChangedListener(ViewModel).Listen<TOfProperty>(
() => ViewModel.SomeProperty,
() =>
{
// Do something
});
答案 1 :(得分:2)
是的,有更好的方法。通常,人们使用Josh Smith的PropertyObserver。
这是我第一次听说过MvvmCross。我开发了自己的跨平台MVVM框架,其中包含一个与Josh Smith的PropertyObserver具有相同功能的类。我想知道MvvmCross是否也没有这样的东西。