Model-View-ViewModel 模式(MVVM)

除了在代码隐藏中编写代码之外,Avalonia 还支持使用 Model-View-ViewModel (MVVM)模式。MVVM 是一种构建 UI 应用程序的常用方法,它将视图逻辑与应用程序逻辑分离开,这样应用程序就能够单元测试。

MVVM 依赖 Avalonia 的 绑定 功能将应用程序分为标准 Avalonia 窗体、管理控件的 View 层和独立于 Avalonia 本身、用来实现应用程序功能的 ViewModel 层。

下面的示例展示了使用 MVVM 模式实现的上一个示例中的代码:

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="AvaloniaApplication1.MainWindow"
        Title="Window with Button"
        Width="250" Height="100">

  <!-- Add button to window -->
  <Button Content="{Binding ButtonText}" Command="{Binding ButtonClicked}"/>

</Window>

在本例中,代码隐藏将 Window 类的 DataContext 属性赋值给了 MainWindowViewModel 类的实例。然后 XAML 使用 Avalonia {Binding}ButtonContent 属性绑定到 MainWindowViewModel 上的 ButtonText 属性。它还将 ButtonCommand 属性绑定到 MainWindowViewModel 上的 ButtonClicked 方法。

单击 Button 控件时,它会执行其 Command 命令,调用已绑定的 MainWindowViewModel.ButtonClicked 方法。这个方法就会去设置 ButtonText 属性,这样就会触发 INotifyPropertyChanged.PropertyChanged 事件,导致 Button 控件重新读取其绑定值并更新 UI。

最后更新于