WPF mvvm框架Stylet使用教程-特殊用法

news2025/6/20 16:09:43

事件绑定

除了绑定Command属性,在WPF中经常需要绑定一些事件的操作,在别的框架中需要引入其他包支持,在Stylet框架中,可以 同样使用s:Action进行绑定,对应绑定ViewModel中的方法。

示例:

  XAML:
  <Button
            Width="146"
            Height="41"
            Margin="104,200,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Content="改名"
            PreviewMouseDown="{s:Action ChangingName}"
            PreviewMouseUp="{s:Action ChangedName}" />
            
   ViewModel:
   
     public void ChangingName()
      {
          ActualName = "改名ing";
      }

      public void ChangedName()
      {
          ActualName = "改名完成";
      }

控制按钮是否启用

只需要增加一个Can+方法名的bool属性,就可以实现控制按钮启用/禁用

例如有一个按钮绑定了方法TestCmd

 <Button
                Width="146"
                Height="41"
                Margin="45,184,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Command="{s:Action TestCmd}"
                Content="测试2" />

只需要在ViewModel中添加一个属性CanTestCmd

private bool _canTestCmd;
public bool CanTestCmd
{
    get
    {
        return _canTestCmd;
    }
    set
    {
        SetAndNotify(ref _canTestCmd, value);
    }
}

控制CanTestCmd属性,就可以实现,无需将CanTestCmd属性绑定到Button上。

在这里插入图片描述

跨ViewModel进行绑定事件方法

主要是绑定外部的View的控件绑定内部ViewModel的方法,通过s:View.ActionTarget绑定内部ViewModel的属性对象

例如在ShellView中有一个Button,用他来操作子界面view里面的内容,在ShellViewModel中有子界面的VIewModel public UserPageViewModel UserPage { get; private set; },通过 s:View.ActionTarget="{Binding UserPage}"将控件绑定的目标对象改成子界面的ViewModel,然后直接绑定对应事件即可实现

  <Button
            Width="112"
            Height="30"
            Margin="725,80,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            s:View.ActionTarget="{Binding UserPage}"
            Command="{s:Action OutUseTest}"
            Content="修改标题" />
 <ContentControl
            Width="800"
            Height="450"
            Margin="0,188,0,0"
            HorizontalAlignment="Center"
            VerticalAlignment="Top"
            s:View.Model="{Binding UserPage}" />

在UserPageViewModel中的属性和方法

  private string _outText;
  public string OutText
  {
      get
      {
          return _outText;
      }
      set
      {
          SetAndNotify(ref _outText, value);
      }
  }

  public void OutUseTest()
  {
      OutText = "Shell操作修改成功";
  }

效果:

在这里插入图片描述

参考:5.Actions

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中科网联CCData借助亚马逊云科技实现高效融媒体测量

近年来&#xff0c;随着媒体与广告传媒行业数字化转型向纵深发展&#xff0c;如何利用数据洞察用户生态、实现精准触达以及业务持续创新已成为媒体产业深入发展的“必答题”。与此同时&#xff0c;随着数据应用的不断深入&#xff0c;借助人工智能和机器学习技术&#xff0c;找…

TCP为什么要三次握手,而不是两次或四次?

文章目录TCP为什么要三次握手&#xff0c;而不是两次或四次&#xff1f;三次握手才可以阻止重复历史连接的初始化&#xff08;主要原因&#xff09;同步双方初始序列号避免资源浪费小结TCP为什么要三次握手&#xff0c;而不是两次或四次&#xff1f; TCP连接时用于保证可靠性和…

eclipse下载与安装(汉化教程)超详细

一、下载eclipse安装包 首先进入 eclipse官网 如下&#xff1a; 这里面有很多版本&#xff1b;我们小白一般选择第二个&#xff0c;向下滑动&#xff1b; 点击符合自己系统的版本。 这里我们切换镜像下载&#xff0c;一般选择离你最近的地址下载。 我建议选择大连东软信息学…

【MATLAB图像处理实用案例详解(9)】——基于最大类间方差遗传算法的道路分割

目录一、最大类间方差遗传算法二、代码示例一、最大类间方差遗传算法 最大类间方差的求解过程&#xff0c;就是在解空间中查找到一个最优的解&#xff0c;使得其方差最大&#xff0c;而遗传算法能非线性快速查找最优解k*及最大的方差&#xff0c;其步骤如下&#xff1a; ①为了…

【算法】01-算法解剖学-二分查找

汝之观览&#xff0c;吾之幸也&#xff01;本系列主要讲解的是算法知识&#xff0c;从算法基本概念&#xff0c;利用图解的方式更好的认识算法&#xff0c;再通过letcode算法题 进行进一步的巩固。刷题三步走&#xff08;1、掌握一门基本的编程语言&#xff1b;2、深入理解基础…

Redis7持久化

一、redis持久化 1、RDB RDB持久性以指定的时间间隔执行数据集的时间点快照 也就是说在一定的时间间隔内&#xff0c;将某一时刻的数据和状态以文件的形式写到磁盘上&#xff0c;这个快照文件交dump.rdb Redis6更新策略 Redis7更新策略 RDB手动触发 5秒2次修改 RDB手动触…

【安卓源码】SystemServer系统进程启动原理

一. SystemServer进程启动概括 Android系统中&#xff0c;第一个启动的是init进程&#xff0c;通过解析init.rc文件启动对应的service。Zygote就是由init启动起来的。Zygote作为应用的孵化器&#xff0c;所有的应用程序都是由他创建而来的。 Zygote是C/S架构的&#xff0c;当…

GANSeg:通过无监督分层图像生成学习分割

文章目录GANSeg: Learning to Segment by Unsupervised Hierarchical Image Generation摘要引言方法Level 1: Point Generation and Part ScaleLevel 2: From Points to MasksLevel 3: Mask-conditioned Image Generation损失函数实验结果GANSeg: Learning to Segment by Unsup…

挖掘潜在用户:2023年海外社交电商网红营销策略解析

近年来&#xff0c;随着社交媒体的不断发展和电商行业的崛起&#xff0c;海外社交电商平台已经成为了一个飞速发展的领域。然而&#xff0c;随着市场竞争的加剧&#xff0c;越来越多的海外社交电商平台开始采用网红营销策略来提升品牌知名度和销售业绩。本文Nox聚星将和大家探讨…

D. Rating Compression(双指针 + 思维)

Problem - D - Codeforces 在竞争编程平台CodeCook上&#xff0c;每个人都有一个由长度为n的整数数组a描述的评分图。现在你正在更新基础设施&#xff0c;所以你已经创建了一个程序来压缩这些图。程序的工作原理如下。给定一个整数参数k&#xff0c;程序取in中每个长度为k的连续…

给您的 MongoDB 定期做个体检:MongoDB 诊断

新钛云服已累计为您分享739篇技术干货接下来的一些列文章会为大家介绍日常工作中常用的 NoSQL 产品 MongoDB。主要涉及到&#xff1a;MongoDB 的安装及基本使用 MongoDB 文档查询 MongoDB 复制集 MongoDB 分片集群的介绍及搭建 MongoDB 安全加密 MongoDB 诊断我们会用…

适合销售使用的CRM系统特点

销售人员抱怨CRM系统太复杂&#xff0c;这是一个很重要的问题。毕竟&#xff0c;如果系统太难使用&#xff0c;会导致CRM实用率和效率下降&#xff0c;最终影响公司的运作。在这篇文章中&#xff0c;我们来探讨当销售抱怨crm客户系统太复杂了&#xff0c;企业该如何解决。 缺少…

能自动翻译的软件-最精准的翻译软件

批量翻译软件是一种利用自然语言处理技术和机器学习算法&#xff0c;可以快速翻译大量文本内容的工具。批量翻译软件可以处理多种格式的文本&#xff0c;包括文档、网页、邮件、PDF等等&#xff0c;更符合掌握多语言的计算机化需求。 147CGPT翻译软件特点&#xff1a; 1.批量任…

机器学习入门实例-加州房价预测-1(数据准备与可视化)

问题描述 数据来源&#xff1a;California Housing Prices dataset from the StatLib repository&#xff0c;1990年加州的统计数据。 要求&#xff1a;预测任意一个街区的房价中位数 缩小问题&#xff1a;superwised multiple regressiong(用到人口、收入等特征) univariat…

Springboot实现优雅的参数校验(Spring Validation)和 if else说再见

文章目录一、概述二、注解2.1 空和非空检查2.2 数值检查2.3 Boolean 值检查2.4 长度检查2.5 日期检查2.6 其它检查2.7 Hibernate Validator 附加的约束注解2.8 Valid 和 Validated三、快速入门3.1 引入依赖3.2 创建基本的类3.3 启动程序&#xff0c;进行测试3.3 一些疑问3.3.1 …

抽烟行为识别预警系统 yolov5

抽烟行为识别预警系统基于yolov5网络模型智能分析技术&#xff0c;抽烟行为识别预警算法通过监测现场人员抽烟行为自动存档进行报警提示。我们选择当下YOLO卷积神经网络YOLOv5来进行抽烟识别检测。6月9日&#xff0c;Ultralytics公司开源了YOLOv5&#xff0c;离上一次YOLOv4发布…

该不该放弃嵌入式,单片机这条路?

本文几乎浓缩了我从业10几年的精华&#xff0c;内容涵盖我转行、打工、创业的经历。 建议从头到尾不要错过一字一句&#xff0c;因为字里行间的经验之谈&#xff0c;或许能成为你人生重要转折点。 全文3700多字&#xff0c;写了6个多小时&#xff0c;如果你赶时间&#xff0c;建…

MATLAB——多元函数的极值

目录 计算多元函数的自由极值 计算二元函数在区域D内的最大值和最小值 函数求偏导数的MATLAB命令 例题如下 计算多元函数的自由极值 定义多元函数 Zf(x,x)求解正规方程fx(x,y)0,fy(x,y)0 得到驻点对于每一个驻点&#xff08;x0,y0&#xff09;&#xff0c;求二阶偏导 A B …

系统复杂度之【高性能】

系统复杂度之【高性能】 今天我们来谈一谈系统复杂度的根源之【高性能】 对性能的不懈追求一直是人类科技持续发展的核心动力。例如计算机&#xff0c;从电子管计算机到晶体管计算机&#xff0c;再到集成电路计算机&#xff0c;运算性能从每秒几次提高到每秒几亿次。然而&#…

Java开发 - 读写分离初体验

前言 上一篇中&#xff0c;我们介绍了主从复制&#xff0c;相信学过的小伙伴已经能够很好的掌握主从复制的技术&#xff0c;实际上也并没有那么难&#xff0c;虽然没有讲一主多从&#xff0c;多主多从的配置&#xff0c;但是从一主一从的配置中也很容易联想到该怎么配置&#…