📜  MVVM –层次结构和导航(1)

📅  最后修改于: 2023-12-03 15:17:45.337000             🧑  作者: Mango

MVVM –层次结构和导航

MVVM是一种流行的设计模式,用于在应用程序中分离视图和业务逻辑。在MVVM中,视图(View)与业务逻辑(ViewModel)彼此分离,同时维护一个双向的数据绑定。

MVVM层次结构

MVVM模式的层次结构由三个主要组件组成:

  1. View(视图) - 用户界面的元素
  2. ViewModel(视图模型) - 抽象了视图状态和事件的逻辑层
  3. Model(模型) - 数据层

MVVM模式层次结构图

View

View是用户界面的元素,其职责是显示数据和处理用户输入。

ViewModel

ViewModel是连接视图和模型的逻辑层。ViewModel通过数据绑定将数据暴露给视图,并处理视图中用户的事件。ViewModel通过ICommand接口暴露命令,这使得ViewModel可以使用与UI框架无关的方式实现交互。ViewModel通常包含应用程序的状态和业务逻辑。这种分离使得ViewModel可以单元测试,而无需依赖于UI框架。

Model

Model是数据层,包含应用程序数据、状态和业务规则。通常,Model负责将数据从持久存储区(如数据库)中检索并将更新写回。

MVVM中的数据绑定

在MVVM中,数据绑定是重要的。数据绑定允许视图中的UI元素与ViewModel中指定的属性或命令关联。

例如:

<Label Text="{Binding Username}" />

上面的标签将显示ViewModel中的Username属性值。

MVVM中的命令

命令是MVVM应用程序中的编程构造,用于表示手动操作(例如按钮点击、滑块移动)。在MVVM中,命令通过ICommand接口定义,其属性具有CanExecute和Execute方法。

public interface ICommand {
    event EventHandler CanExecuteChanged;
    bool CanExecute(object parameter);
    void Execute(object parameter);
}
MVVM中的导航

在MVVM应用程序中,导航是一个重要的概念。导航通常表示用户从一个视图导航到另一个视图,例如从主页导航到设置页面。在MVVM中,导航通常在ViewModel中处理。ViewModel负责管理应用程序状态,并负责处理导航。

导航通常涉及到两个步骤:导航到新视图和从旧视图返回。

例如,下面的示例演示了如何使用.NET MAUI(跨平台UI框架)中的INavigation接口导航到新的视图中:

public class AppViewModel {
    private INavigation _navigation;
    public AppViewModel(INavigation navigation) {
        _navigation = navigation;
    }

    public ICommand ShowSettingsCommand { get; } = new Command(async () => {
        await _navigation.PushAsync(new SettingsPage());
    });
}

上面的代码显示一个ShowSettingsCommand属性,该属性设置为一个新的Command。当该命令被执行时,它将使用INavigation接口导航到一个新的SettingsPage视图中。

这就是MVVM模式在实际应用中的使用。通常,在实际应用中,MVVM模式与其他软件设计方法一起使用。