Model-View-ViewModel模式(MVVM)

除了在代码后台中编写代码外,Avalonia还支持使用Model-View-ViewModel(MVVM)模式。MVVM是一种常见的UI应用程序结构方式,它将视图逻辑与应用程序逻辑分离,以便使您的应用程序可以进行单元测试。

MVVM依赖于Avalonia的绑定功能,将您的应用程序分成视图层和ViewModel层。其中,视图层显示标准的Avalonia窗口和控件,ViewModel层定义应用程序的功能,独立于Avalonia本身。

以下示例显示了使用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>

在此示例中,代码后台将WindowDataContext属性分配为MainWindowViewModel的实例。然后,XAML使用Avalonia {Binding}ButtonContent属性绑定到MainWindowViewModel上的ButtonText属性。它还将ButtonCommand属性绑定到MainWindowViewModel上的ButtonClicked方法。

当单击Button时,它会调用其Command,从而导致调用绑定的MainWindowViewModel.ButtonClicked方法。然后,该方法设置ButtonText属性,触发INotifyPropertyChanged.PropertyChanged事件,导致Button重新读取其绑定值并更新UI。

Last updated