BindableBase 是 Observable 项目从 MVVMLight 的正确转换吗?

Is BindableBase the correct conversion of Observable project from MVVMLight?

我正在将在 Gala MVVMLight 中实现的项目转换为 Prism。其中一个模型继承自 MVVMLight 中的 ObservableObject。这是在 Prism 中转换此模型的正确方法吗?

public class SampleClass : ObservableObject

public class SampleClass : BindableBase   

像这样转换 属性 个设置器。

  public bool IsActive
    {
        get { return isActive; }
        set { Set(ref isActive, value); }
    }

    public bool IsActive
    {
        get { return isActive; }
        set { SetProperty(ref isActive, value); }
    }

底数 class 是什么并不重要。没有明确要求您的 ViewModel 继承自 BindableBase 以使 Prism 正常工作。我有几个项目使用 Prism 作为导航和 DependencyInjection,但使用从 James Montemagno 的 MvvmHelpers 的 ObservableObject 或 ReactiveUI 的 ReactiveObject 继承的 ViewModel,甚至是实现 INotifyPropertyChanged 的​​自定义基础 class。实际上,唯一的要求是您的 ViewModel 按需要的方式工作。

对于相当静态的视图,这可能只是一个 "dumb" ViewModel class,它可能有几个在构造函数中设置的属性。

public class AboutViewModel
{
    public AboutViewModel()
    {
        Title = "About";
        Text = "This is a really awesome app...";
    }

    public string Title { get; }

    public string Text { get; }
}

在大多数情况下,您只需要一个实现 INotifyPropertyChanged 的​​ ViewModel。这可以通过一个基础 class 来实现,就像这里提到的任何一个,包括来自 MvvmLight 的 ObservableObject,或者它可以直接实现它(尽管我通常不建议这样做)。