WPF 事件转命令

2023-11-04

WPF中不是所有的控件都有Command属性的,如果窗体我需要在ViewModel中处理Loaded事件命令,或者其他事件的命令时,很难都过绑定Command完成,必须要注册依赖属性或事件等,

使用System.Windows.Interactivity交互事件

下载System.Windows.Interactivity.dll文件,并引入项目中(在VS项目的引用列表中可以看到)。可在Nuget搜索System.Windows.Interactivity下载安装到项目中。

XAML中使用该dll

 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

 

<TextBox Text="Test">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="LostFocus">
            <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=DataContext.OnTextLostFocus}"
                                   CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type TextBox}}}"/>
        </i:EventTrigger>
        <i:EventTrigger EventName="GotFocus">
            <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=DataContext.OnTextGotFocus}"
                                   CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type TextBox}}}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>

由于VS中不支持System.Windows.Interactivity的智能提示,经常要查阅这个EventTrigger还能触发哪些方法,所有EventName的列表如下:

MSDN中Grid Events https://msdn.microsoft.com/en-us/library/system.windows.controls.grid_events(v=vs.110).aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 事件转命令 的相关文章

  • WPF 简单绑定到 INotifyPropertyChanged 对象

    我创建了最简单的绑定 绑定到后面代码中的对象的文本框 但事件 文本框仍为空 窗口的 DataContext 已设置 并且绑定路径已存在 你能说出什么问题了吗 XAML
  • 在大型数据绑定 ObservableCollection 中添加/删除许多项目,而无需冻结 GUI

    我和我的团队正在开发一个 WPF 应用程序 该应用程序显示多个并发 XamDataChart 控件 由 Infragistics 提供 每个图表都绑定到不同的 ObservableCollection 最多可包含 200 万个点 对于每个图
  • 如何将 MouseDown 事件放入样式中?

    这有效 XAML
  • Tabcontrol 中的 SelectedIndex 不变 - 调度程序问题

    为什么在我设置 SelectedIndex 0 后 我随后 而不是响应 得到使用 SelectedIndex 4 调用的事件处理程序 我追踪到对调度程序的调用 但我不明白为什么 计划如下 我有一个页面 其中包含带有各种选项卡的选项卡控件 当
  • Prism自定义确认交互

    我使用 Prism Unity WPF 和 Mvvm 在应用程序中创建了一个自定义确认窗口 我需要有关需要发送回视图模型的通知的帮助 我在详细记录视图中有这个 我们称之为 MyDetailView
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • iTextSharp 从 WPF 固定文档生成 PDF

    我有一个简单的 WPF 应用程序 可以显示和打印一些内容 使用固定文档进行报告 如何使用免费且开放的解决方案从中生成 PDF 比如iTextSharp WPF 固定文档 也称为 XPS 文档 是对 PDF 的明显改进 它具有 PDF 所缺乏
  • 如何确保 ViewModel 属性在再次更改其值之前已绑定在视图上?

    有以下情况 ViewModel有一个变化非常快的对象 通过不同的线程 View通过以下方式获悉NotifyPropertyChanged界面 但似乎它的工作速度很慢 并且在视图绑定新值并绘制它之前 它会更改更多次 因此它会丢失一些值 我也尝
  • 如何按 z-index 对 Windows 进行排序?

    如果我枚举窗口Application Current Windows 对于任意两个窗口 我如何判断哪一个 更接近 即具有更大的 z index 或者 换句话说 我如何按 z 索引对这些窗口进行排序 您无法从 WPF 获取 Window 的
  • MVVM 中动态创建 MenuItem-Separator 的 WPF 光学样式

    我有一个MenuItem从动态创建其子菜单项ItemsSource 财产 对于分组 我在菜单中有分隔符 分隔符是由 ItemsSource 集合中的 ControlTemplate 为每个空条目创建的MenuItem ItemContain
  • 如何访问另一个类的字段

    您好 我有一个带有 2 个窗口的 WPF C 应用程序 我正在尝试访问 public int myInt 在我的主窗口中从我的其他窗口 MainWindow myInt 3 智能感知甚至不允许我访问该变量 有人可以帮忙吗 您需要将其声明为s
  • 如何从注册表获取安装的软件路径?

    我需要替换安装在任何驱动器 如 C D E 中的文件 我想从注册表中找到安装的文件路径并将该文件替换为其他文件 软件将安装在任何驱动器中 我想替换文件 我正在使用这段代码 如何使用注册表查找安装的文件路径并替换为 C 中的其他文件 stri
  • WPF 应用程序在第一次交互(例如单击按钮)后停止/冻结

    我目前在 WPF 中遇到问题 UI 加载正常 但每当进行第一次用户交互时 例如单击按钮 应用程序似乎会停止 或者例如 如果我有两个显示 MessageBox 的按钮 则第一次单击将等待几秒钟 然后显示MessageBox 但任何后续交互都是
  • 我对 MVVM 模式有一些疑问

    我叫 Jes s 来自西班牙 是一名 NET 开发人员 几天前我刚刚发现了这个伟大的网络 我有一些关于 MVVM 模式的问题 如果您能回答我 我将很高兴 我三个月前开始使用 WPF 并且学习了 MVP 模式 MVP 非常好 因为您可以很好地
  • 何时引发 Window.SourceInitialized 事件

    我能保证Window SourceInitialized事件总是会在Window Loaded事件 我需要HwndSource在我的中进一步处理的对象Window Loaded 事件处理程序我不确定到那时这是否总是可用 以下是您可以预期的事
  • 如何为多个 BO 属性定义 IDataErrorInfo 错误属性

    我开始通过 IDataErrorInfo 接口在我的 WPF 项目中实现验证 我的业务对象包含多个带有验证信息的属性 如何获取与该对象关联的所有错误消息的列表 我的想法是 这就是 Error 属性的用途 但我无法追踪任何使用它来报告多个属性
  • WPF TabControl的SelectedIndex设置问题

    我有一个包含两个项目的 TabControl
  • 将 System.Drawing.Image 转换为 System.Windows.Media.ImageSource 但没有结果

    我想在我的 WPF 应用程序中将 Image 转换为 ImageSource 我使用正常工作的 Code128 库 已在 WinForms 应用程序中检查 下面的函数返回具有适当大小的 ImageSource 但没有任何内容可见 priva
  • 如何从 WPF 窗口显示 Winforms 对话框?

    这个问题的反面已经被回答过很多次了 public static void SetOwner object activeWindow object dialog if IsWindow dialog IsWindow activeWindow
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测

随机推荐

  • VS Qt 使用linguits(Qt语言家)生成.ts的翻译文件并翻译使用的详细过程

    VS 生成ts文件 vs中 Qt VS Tools Create new translation File选择需要的语言 生成对应ts文件在解决方案的资源管理器的Translation File文件夹中 此时本地未生成 选中生成的ts文件
  • 从Endnote导入Zotero(含PDF)

    概述 这个问题尚未完美的解决 不过本方法可行 1 在Endnote中导出 xml文件 2 替换路径 使用记事本打开导出的 xml文件 将 internal pdf 替换为 My EndNote Library Data PDF 3 在Zot
  • JAVA子类继承父类的成员变量以及方法

    Dog继承Animal class Animal protected String name protected String description protected String say return 一只动物 class Dog e
  • 计算机网络中seq,计算机网络B卷及参考答案

    计算机网络 试卷B 卷 考试方式 闭卷 考试时间 120分钟 卷面总分 100分 一 单项选择题 本题共20题 每题2分 共40分 1 局部地区的通信网络简称局域网 英文缩写为 A WAN B LAN C MAN D PAN 2 因特网的正
  • 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT)

    5 STM32物联网开发WIFI ESP8266 GPRS Air202 系统方案安全篇 配置MQTT的SSL证书 验证安全通信 首先确定自己的固件打开了SSL 升级篇里面的固件我打开了SSL 如果自己下载的是这个固件SSL就打开了 如果自
  • 快速定位java系统线上问题

    原文 https blog csdn net GitChat article details 79019454 一 前言 Java 语言是当前互联网应用最为广泛的语言 作为一名 Java 程序猿 当业务相对比较稳定之后平常工作除了 codi
  • 设计模式简述

    定义 设计模式是为解决某个问题的一套解决方案 优点 1 为某个问题提供了最优解决方案 2 A君以设计模式的思路写的代码 懂设计模式的B君 就很容易读懂A君的代码 设计模式类型 1 创建型模式 创建对象的同时隐藏创建逻辑的方式 2 结构型模式
  • Python爬取、存储、分析、可视化豆瓣电影Top250

    Python爬取 存储 分析 可视化豆瓣电影Top250 网站链接 https movie douban com top250 文章目录 前言 一 python爬取目标数据 并写入csv文件 二 pymysql数据存储 三 pandas数据
  • SSM框架用Ajax增删改查一个页面(简单易懂)

    目录 一 最终页面效果 二 Ajax回顾 2 1 ajax是什么 2 2 ajax有什么特点 2 3 具体编程内容 三 Jquery实现Ajax 3 1 导入Jquery库 3 2 释放Jquery静态资源 3 3 属性display no
  • 日常总结 -- verdaccio搭建npm私有仓库

    verdaccio搭建npm私有仓库 参考 verdaccio https github com verdaccio verdaccio readme 搭建NPM私有库 https www jianshu com p 1d0e85d1423
  • 【华为OD机试】求最多可以派出多少支团队【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 用数组代表每个人的能力 一个比赛活动要求参赛团队的最低能力值为N 每个团队可以由1人或2人组成 且1个人只能参加1个团队 请计算出最多可以派出多少支符合要求的团队 输
  • 学习日志-《掘金/知乎-前端智能化》笔记

    前言 本文记录了学习掘金 知乎 前端智能化过程中的所有笔记 2021前端智能化的总结和展望 https juejin cn post 6966404264633565215 智能化效果图 流程图 前端智能化看 低代码 无代码 https j
  • docker search 镜像超时 使用dig解决

    安装dig yum install bind utils docker search mysql 时候报错 root dockermaster docker search mysqlError response from daemon Ge
  • 机器翻译——英译中

    1 前言 本文使用飞桨 PaddlePaddle 训练机器翻译模型 实现将英文翻译成中文的神经网络翻译机 本人全部文章请参见 博客文章导航目录 本文归属于 自然语言处理系列 本系列实践代码请参见 我的GitHub 前文 BERT与ERNIE
  • 全球网络加速的五个方法

    一 全球网络加速的定义 全球网络加速是指通过使用各种技术和服务来提高全球范围内的网络连接速度和性能 随着全球化的发展 跨国企业 云服务提供商和全球用户之间的网络通信变得越来越重要 全球网络加速旨在克服跨国网络连接中的延迟 带宽限制和数据包丢
  • 什么是测试开发?现阶段找工作能否抢救一下?

    前言 最近开始投简历 除了开发 唉看到了测试开发这一职位 那这是个什么岗位的 像我这种开发干不过别人 但又会一点的应届生能否抢救一下 1 我对测试开发的首先印象 听名字就是测试跟开发的结合嘛 估计是测试的基础上 进行一些开发任务 提高测试的
  • 关于学习JPA出现的问题(1)——不允许有匹配 “[xX][mM][lL]“ 的处理指令目标(Unable to locate persistence units)

    这个错误比较简单 而且触发的条件很多 主要就是你的XML文件错了 导致读取不到文件信息 这个时候第一个要检查的是文件的格式 然后再检查标签 一般都能排查出来
  • 搭建国产化统信UOS操作系统虚拟机

    统信UOS作为国产化操作系统的生力军 近年来异军突起 我使用过银河麒麟 飞腾麒麟 最后还是推荐给大家这款UOS操作系统 一 下载镜像 首先需要登录统信操作系统的官方网站https www chinauos com resource down
  • 跨平台发布文章测试

    跨平台发布文章测试 跨平台发布文章测试 跨平台发布文章测试 跨平台发布文章测试 跨平台发布文章测试 本文由博客群发一文多发等运营工具平台 OpenWrite 发布
  • WPF 事件转命令

    WPF中不是所有的控件都有Command属性的 如果窗体我需要在ViewModel中处理Loaded事件命令 或者其他事件的命令时 很难都过绑定Command完成 必须要注册依赖属性或事件等 使用System Windows Interac