WPF mvvm框架Stylet使用教程-基础用法

Stylet框架基础用法

安装Nuget包

  1. 在“管理Nuget程序包”中搜索Stylet,查看Stylet包支持的net版本,然后选择第二个Stylet.Start包进行安装,该包会自动安装stylet并且生成基本的配置

注意事项:安装时要把需要安装的程序设为启动项目,或者尽量保存解决方案中只有一个wpf项目,否则Stylet.Start包生成的文件会跑到别的项目去

WPF mvvm框架Stylet使用教程-基础用法_第1张图片
WPF mvvm框架Stylet使用教程-基础用法_第2张图片

安装时自动调整项目内的文件

安装前:
WPF mvvm框架Stylet使用教程-基础用法_第3张图片

安装后:
WPF mvvm框架Stylet使用教程-基础用法_第4张图片

如果自动安装无法正常安装,也可以自己直接安装Stylet包,然后自己进行这些操作

安装之后的变化:

  1. 添加了Bootstrapper.cs文件

Bootstrapper(引导程序)

//Bootstrapper.cs代码
public class Bootstrapper : Bootstrapper
  {
      protected override void ConfigureIoC(IStyletIoCBuilder builder)
      {
          // Configure the IoC container in here
      }

      protected override void Configure()
      {
          // Perform any other configuration before the application starts
      }
  }
  1. 增加了Pages文件夹,里面的主要的外壳窗体ShellView和他的ViewModel
    在这里插入图片描述

  2. 在App.xaml中配置ApplicationLoader应用程序加载器和Bootstrapper引导程序

WPF mvvm框架Stylet使用教程-基础用法_第5张图片

  1. 删除了MainWindow,主窗体就是ShellView

运行就可以看到默认界面效果

WPF mvvm框架Stylet使用教程-基础用法_第6张图片

使用绑定

在Xaml中使用添加命名空间引用

xmlns:s="https://github.com/canton7/Stylet"

在ViewModel中使用需要继承基类Sceen,其他需要绑定Model可以继承验证基类ValidatingModelBase和属性推送基类PropertyChangedBase

他们三者继承关系:SceenValidatingModelBasePropertyChangedBase

属性绑定:

跟其他框架类似,只是改用了SetAndNotify方法,

 //xaml:
  <TextBlock Text="{Binding Title}" />
 
 //CS:
private string _title;
public string Title
{
    get
    {
        return _title;
    }
    set
    {
        SetAndNotify(ref _title, value);
    }
}
  
  //初始化
Title = "Stylet MVVM 框架学习";

效果:

WPF mvvm框架Stylet使用教程-基础用法_第7张图片

命令绑定

命令绑定与其他框架略有不同,在Stylet中只要实现一个方法即可作为命令绑定,无需实现一个命令的属性

在ViewModel中实现一个方法:

 public void ChangeTitle()  //方法必须为Pulic,否则无法查找到
{

    Title = "使用Stylet Command改变标题";
}

添加一个Button,在Command属性中使用s:Action绑定ViewModel中的方法名,即可实现命令绑定

 <Button
            Width="112"
            Height="30"
            Margin="0,360,0,0"
            HorizontalAlignment="Center"
            VerticalAlignment="Top"
            Command="{s:Action ChangeTitle}"
            Content="修改标题" />

效果:

点击之后修改了Title

WPF mvvm框架Stylet使用教程-基础用法_第8张图片

ViewModel和View绑定

在Stylet中使用了ViewModel-first模式,不需要自己设置DataContext进行绑定,在框架中有第三个服务会负责为指定的ViewModel找到对应的View。

通过默认的命名规则进行约束,将名称中的“ViewModel”替换为“View”,例如:

“ShellViewModel”对应“ShellView”

“UserPageViewModel”对应“UserPageView”

在创建ViewModel和View时就需要按这个命名规则进行创建。

使用示例:

创建

创建一个UserPageView的用户控件(UserControl)如下

WPF mvvm框架Stylet使用教程-基础用法_第9张图片

创建一个UserPageViewModel的ViewModel,简单代码如下:

public class UserPageViewModel : Screen
{
    public string Name { get; set; }


    public UserPageViewModel()
    {
        Name = "张三";
    }

}

使用:

ShellViewModel中添加UserPageViewModel的属性字段,并在构造方法中初始化(如果不初始化,该属性为null,前端界面就不会显示这个view)

WPF mvvm框架Stylet使用教程-基础用法_第10张图片

在ShellView中添加一个内容控件(ContentControl)作为占位控件使用,然后绑定他的s:View.Model为ViewModel中的UserPage,如下

 <ContentControl
            Width="425"
            Height="277"
            Margin="10,19,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            s:View.Model="{Binding UserPage}" />

效果:

可以看到在界面上显示了UserPageView控件内容

WPF mvvm框架Stylet使用教程-基础用法_第11张图片

如果不初始化,则不显示

WPF mvvm框架Stylet使用教程-基础用法_第12张图片

扩展-其他初始化方式:

通过Ioc容器注入

构造方法注入的方式,Stylet框架中实现了Ioc容器的功能,并且所有ViewModel都由控件自动生成,实现了注入功能,所以只要在构造函数中加入需要注入的参数即可

WPF mvvm框架Stylet使用教程-基础用法_第13张图片

属性注入[Inject]也能达到同样效果

在这里插入图片描述

工程下载
示例源码

你可能感兴趣的:(WPF-MVVM,wpf,c#,开发语言)