使用 DataTrigger 动态设置事件处理程序

2024-01-04

我有几个项目控件,我需要为其附加一个事件处理程序 PreviewMouseLeftButtonDown 仅在满足特定条件时发生。

我用数据触发器为我的控件设计了一种样式,我检查了它的绑定并用常规财产设置者对于 BorderThickness 属性只是为了查看数据触发器是否有效 。 (确实如此..)

当满足数据触发器的条件时,如何使用事件设置器以与常规属性设置器相同的方式应用数据触发器来附加事件处理程序?

类似于:

     <Style TargetType="{x:Type ItemsControl}">                              
        <Style.Triggers>
            <DataTrigger Binding="{Binding Turn}" Value="True">
                <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter>
            </DataTrigger>                            
        </Style.Triggers>
     </Style>

此标记在事件设置器行上引发以下异常:

    'Set property 'System.Windows.EventSetter.Event' threw an exception.' 

内部异常:

       {"Value cannot be null.\r\nParameter name: value"}

不幸的是根据MSDN doc http://msdn.microsoft.com/en-us/library/system.windows.eventsetter.aspx备注下:

注意仅 Style.Setter 支持 EventSetter对象。触发器 (TriggerBase 和派生类)do not支持事件设置者

在这种情况下,DataTrigger 派生自 TriggerBase,因此您不能使用它来动态设置事件处理程序。我现在能想到的解决方法可能是根据 的值动态切换样式Turn.

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

使用 DataTrigger 动态设置事件处理程序 的相关文章

随机推荐

  • 创建具有类似标签功能的自定义 editText

    我一直在四处寻找 但找不到任何答案 我想要实现的是一个类似于 ICS gmail 应用程序撰写屏幕中的 收件人 字段的 EditText Here s an image describing what I want 我正在考虑延长EditT
  • 使用矢量可绘制色调颜色选择器膨胀视图时发生崩溃

    我想使用带有色调颜色选择器的矢量绘图
  • mysql:循环表并更改表添加索引

    我有大约 1000 个以相同前缀开头的表 table prefix SOME ID 我可以从另一个表中获取ID 循环的快速方法是什么allmysql 中的表并执行以下操作 ALTER TABLE table prefix some id A
  • 对于Azure B2C,有没有办法通过声明发送用户主体名称?

    我在将当前登录用户的用户名从 Azure b2c 获取到我的 Blazor Web 应用程序时遇到一些问题 本质上 我想创建一个用户名帐户 其中用户名是用户主体名称 我最初使用的是电子邮件注册策略 其中显示名称作为用户名 然而 b2c 并不
  • 如何在 PHP OOP 中连接控制器来查看?

    现在我使用 PHP OOP 编程 没有框架 我开始创建一个博客应用程序 首先 我创建一个 Bootstrap 文件 然后所有情况都应该通过它来处理 然后我创建一个处理程序类来处理登录和发布类 现在显示登录处理程序类中的值 然后如何连接到视图
  • 为什么 nuxt 中的“仅客户端”组件抱怨“窗口未定义”?

    我有 Vue SPA 我正在尝试迁移到 nuxt 我在用vue2leaflet在我包含的组件中
  • 使用上下文填充数据集 - Entity Framework 4

    我有一些从上下文返回的数据 数据已被拉取spCmsCategoriesReadHierarchy I need从上下文中获取所有数据并填充我的数据集 我的最终目标是用 DataSet 对象填充 TreeView 控件 有任何想法吗 感谢您的
  • 如何在 PHP 中验证 DKIM 签名?

    我承认我不太擅长密钥验证 我有一个从 POP3 服务器下载消息的脚本 并且我正在尝试验证 PHP 中的 DKIM 签名 我已经弄清楚了主体哈希 bh 验证检查 但我无法弄清楚标头验证 http www dkim org specs rfc4
  • Google Analytics - 跟踪单个 HTTP 请求中的多个事件

    我需要跟踪该项目在搜索结果 在网络应用程序中 中出现的次数 IE 用户搜索某些内容并获取前 20 个项目 跟踪第 20 个项目中每一个的 1 次访问 在另一个页面上 用户可以查看项目的统计信息 它在搜索结果中显示的次数 我考虑使用谷歌分析事
  • Vuejs:根据 eslint 规则对 html 数据进行 V-HTML 数据绑定

    我正在使用以下方法绑定 html 并显示在我的页面中 它工作完美 但是我收到来自 eslint 的警告 v html 指令可能导致 XSS 攻击 eslint vue no v html
  • LocalDB 和实体框架 6 - 安全性

    我正在尝试找出一种使用 LocalDB 代替 SQL 来进行 EF6 查询集成测试的方法 这将允许我们在构建服务器上运行集成测试 看来我应该能够在 SQL Express 中复制我的数据库 分离并导入到我的测试项目中 我希望从那里我可以修改
  • R:解析嵌套括号

    我想使用 R 解析嵌套括号 不 这不是 JASON 我见过使用 perl php 和 python 的示例 但我在 R 中无法正常工作 以下是一些数据的示例 a a a aa a a a a b b b b cc c c 我想根据三个父括号
  • 在 docker 容器内运行 pudb

    我更喜欢使用 pudb 进行 python 调试 我正在构建在 docker 容器内运行的 python 应用程序 有谁知道如何使 pudb 在 docker 容器内可用 谢谢 您需要在 Docker 容器上安装 pudb 可以通过将此行添
  • 使用 jquery 将项目添加到列表框

    如何使用 jquery 将项目添加到列表框 例如在下面的列表框中
  • 列出 CalendarApp.Color 中的枚举键

    尝试使用以下代码在 Google 脚本中获取 Google CalendarApp Color 枚举中的键列表 var colors CalendarApp Color for var x in colors Logger log Colo
  • 代码合同。如何抑制生成代码的警告?

    如何关闭对 Linq2Sql 代码的静态检查 您可以通过将有问题的类标记为来抑制对静态代码的检查 ContractVerification false 如果您生成的类是partial您可以创建另一个文件 其中包含另一个部分 ial 并将其添
  • 报表查看器中的重叠表格

    我有一个报告查看器控件 我向其中提供 SSRS 报告 生成的报告相当大 无法适应单一视图 因此 当我们在 Firefox 11 或 chrome 15 上的 ReportViewer 中看到该报告时 呈现的表格是重叠的 但它在 IE 中运行
  • 我可以将网页的图像捆绑到一个文件中吗?

    我有一个包含大约 70 张图像的网页 我正在寻找一种将这些图像捆绑到资源文件中的方法 这并不是为了提高客户端性能 因为缓存等会解决这个问题 更多的是通过我们的 cms 在服务器端进行资产管理 我希望能够将单个资源部署到 cms 中 而不必创
  • Pandas 和 Numpy 中有关多线程的奇怪错误

    Numpy 的大部分功能都会默认启用多线程 例如 我在 8 核 intel cpu 工作站上工作 如果我运行脚本 import numpy as np x np random random 1000000 for i in range 10
  • 使用 DataTrigger 动态设置事件处理程序

    我有几个项目控件 我需要为其附加一个事件处理程序 PreviewMouseLeftButtonDown 仅在满足特定条件时发生 我用数据触发器为我的控件设计了一种样式 我检查了它的绑定并用常规财产设置者对于 BorderThickness