1

对于 XAML 视图,我将其挂接到this.ViewModel.PropertyChanged如下:

ViewModel.PropertyChanged += (s, e) =>
{
    if (e.PropertyName == "CurrentImage")
        DoStuff();
};

这是因为 XAML 不够灵活,我无法在没有代码隐藏的情况下直接实现我想要的,还因为它是纯粹与 WinRT/XAML 相关的代码,而不是核心可移植项目。

然而,在视图的构造函数中,该ViewModel属性为空,因此它的工作方式如下:

this.Loaded += (s2, e2) =>
ViewModel.PropertyChanged += (s, e) =>
{
    if (e.PropertyName == "CurrentImage")
        DoStuff();
};

我认为这(除了使用字符串来引用属性)可能不是很干净,并且可能应该有更好的方法来实现我想要的。有没有更理想的方法?

4

2 回答 2

3

这可以使用 MvxPropertyChangedListener 来完成,如Stuart 的评论中所述:

new MvxPropertyChangedListener(ViewModel).Listen<TOfProperty>(
    () => ViewModel.SomeProperty,
    () =>
    {
        // Do something
    });
于 2013-11-18T09:09:07.220 回答
2

是的,有更好的方法。通常,人们使用 Josh Smith 的PropertyObserver

不过,这是我第一次听说 MvvmCross。我开发了我自己的跨平台 MVVM 框架,其中包括一个与 Josh Smith 的 PropertyObserver 实现相同功能的类。我想知道 MvvmCross 是否也没有类似的东西。

于 2013-08-07T10:31:59.717 回答