当前位置: 首页 > news >正文

在wpf 中 用mvvm 的方式 绑定 鼠标事件

在 wpf中, 如果遇到控件的 MouseEnter MouseLeave 属性时, 往往会因为有参数object sender, System.Windows.Input.MouseEventArgs e 很多人选择直接生成属性在后台, 破坏了MVVM, 这其实是不必要的. 我们完全可以用 xmlns:i=“http://schemas.microsoft.com/xaml/behaviors”

完成:

            <TextBlockd:Text="设计时文字"FontSize="50"Text="{Binding Txt1}"><i:Interaction.Triggers><i:EventTrigger EventName="MouseEnter"><i:CallMethodAction MethodName="Test1" TargetObject="{Binding}" /></i:EventTrigger></i:Interaction.Triggers></TextBlock>
        public void Test1(object sender, System.Windows.Input.MouseEventArgs e){Txt1 = "改变了";}

用CallMethodAction 可以绑定到viewmodel中的函数, 并且正确接收鼠标事件 MouseEventArgs

再记录一个 读取Siemens PLC 的通用类

    public class DB10 : INotifyPropertyChanged{public bool B1{get => b1;set{if (b1 != value && value == false){RaisePropertyChanged();}b1 = value;}}public bool B2 { get; set; }public bool B3 { get; set; }public bool B4 { get; set; }public bool B5 { get; set; }public bool B6 { get; set; }public bool B7 { get; set; }public bool B8 { get; set; }public bool B9 { get; set; }public bool B10 { get; set; }public bool B11 { get; set; }public bool B12 { get; set; }public bool B13 { get; set; }public bool B14 { get; set; }public bool B15 { get; set; }public bool B16 { get; set; }public short S1 { get; set; }public short S2 { get; set; }public short S3 { get; set; }public short S4 { get; set; }public short S5 { get; set; }public short S6 { get; set; }public short S7 { get; set; }public short S8 { get; set; }public short S9 { get; set; }public short S10 { get; set; }public short S11 { get; set; }public short S12 { get; set; }public short S13 { get; set; }public short S14 { get; set; }public short S15 { get; set; }public short S16 { get; set; }public float F1 { get; set; }public float F2 { get; set; }public float F3 { get; set; }public float F4 { get; set; }public float F5 { get; set; }public float F6 { get; set; }public float F7 { get; set; }public float F8 { get; set; }public float F9 { get; set; }public float F10 { get; set; }public float F11 { get; set; }public float F12 { get; set; }public float F13 { get; set; }public float F14 { get; set; }public float F15 { get; set; }public float F16 { get; set; }/// <summary>/// 图纸/// </summary>[S7String(S7StringType.S7String, 50)]public string Str1 { get; set; } = string.Empty;/// <summary>/// 图纸/// </summary>[S7String(S7StringType.S7String, 50)]public string Str2 { get; set; } = string.Empty;/// <summary>/// 图纸/// </summary>[S7String(S7StringType.S7String, 50)]public string Str3 { get; set; } = string.Empty;public event PropertyChangedEventHandler? PropertyChanged;private bool b1;private void RaisePropertyChanged([CallerMemberName] string propertyName = ""){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}
http://www.lryc.cn/news/462200.html

相关文章:

  • TELEDYNE DALSA相机连接编码器
  • 每天一个数据分析题(五百零八)- 机器学习模型
  • leetcode栈与队列(一)-有效的括号
  • 鸿蒙NEXT开发-知乎评论小案例(基于最新api12稳定版)
  • 重学SpringBoot3-集成Redis(十一)之地理位置数据存储
  • Docker-compose 单节点管理、consul 注册中心、registrator、template
  • 制药企业MES与TMS的数据库改造如何兼顾安全与效率双提升
  • Spring Boot比Spring多哪些注解
  • 985研一学习日记 - 2024.10.17
  • 牛客SQL29详解 计算用户的平均次日留存率
  • Redis --- 第四讲 --- 常用数据结构 --- 其他类型stream、bitmap……。补充内容scan命令。
  • Java多线程--实现跑马小游戏
  • 扫雷(C 语言)
  • 有源滤波器(一)
  • Flume面试整理-常见的Channel类型
  • 【前端】如何制作一个自己的网页(6)
  • Linux系统性能调优技巧
  • 数学建模算法与应用 第5章 插值与拟合方法
  • 3D Slicer 教程二 ---- 数据集
  • 【建议收藏】30个Java异常的知识点,你能撑到第几个?
  • 【Linux系统编程】环境基础开发工具使用
  • 滚雪球学Redis[6.2讲]:Redis脚本与Lua:深入掌握Redis中的高效编程技巧
  • 上市不到一月,极氪7X交付破万台!论纯电,极氪真“遥遥领先”
  • 【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>
  • Java高并发控制之按业务对象加同步锁
  • Python魔法函数__iter__的用法
  • Redis-缓存一致性
  • SAP学习笔记 - 豆知识13 - Msg 番号 NR751 - Object RF_BELEG R100、番号範囲間隔 49 不存在 FBN1
  • 美摄科技云服务解决方案,方案成熟,接入简单
  • 【bug】paddleocr draw_ocr_box_txt ValueError: incorrect coordinate type