对于XAML View ,我将其钩接到this.ViewModel.PropertyChanged
上,如下所示:
ViewModel.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "CurrentImage")
DoStuff();
};
这是因为XAML不够灵活,无法在没有代码隐藏的情况下直接实现我想要的功能,也因为它的代码与WinRT/XAML纯粹相关,而不与核心可移植项目相关。
但是,在 View 的构造函数中,
ViewModel
属性为null,因此它的工作方式如下:this.Loaded += (s2, e2) =>
ViewModel.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "CurrentImage")
DoStuff();
};
我认为这(除了使用字符串来引用属性之外)可能还不是很干净,并且应该有一种更好的方法来实现我想要的功能。有没有更理想的方法?
最佳答案
如Stuart's comment所述,这可以通过MvxPropertyChangedListener完成:
new MvxPropertyChangedListener(ViewModel).Listen<TOfProperty>(
() => ViewModel.SomeProperty,
() =>
{
// Do something
});
关于xaml - 从 View 的代码隐藏在MvvmCross中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18100792/