WPF 将 FrameworkElement 事件绑定到命令

2023-12-19

我怎样才能绑定一个UserControl's FrameworkElement事件到视图模型命令?我使用 MVVM 和 Prism,因此视图和视图模型之间的清晰分离会很好。

我尝试了多种方法,但都不起作用:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="FrameworkElement.Unloaded">
        <i:InvokeCommandAction Command="{Binding Unloaded}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

也使用本教程http://blog.functionfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html

local:FrameworkElementBehavior.UnloadedCommand="{Binding Unloaded}"

我是否别无选择,只能在我的代码隐藏中添加一些函数?

上述尝试均未出错,但该命令未执行。

这是我的视图模型:

public class CustomerViewModel : PosViewModelBase
{
    public ICommand Unloaded
    {
        get { return new UnloadedCommand(); }
    }

    public CustomerViewModel()
    {

    }

    private class UnloadedCommand : ICommand
    {
        public bool CanExecute(object parameter)
        {
            return true;
        }

        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)
        {
            Debug.WriteLine("Customer stuff is out of view");
        }
    }
}

我认为问题可能出在 Unloaded 事件中。

来自 MSDN 页面http://msdn.microsoft.com/en-us/library/ms754221.aspx#common_events http://msdn.microsoft.com/en-us/library/ms754221.aspx#common_events:

Unloaded 最后引发,并由演示源或被删除的视觉父对象启动。当 Unloaded 被引发和处理时,作为事件源父级的元素(由 Parent 属性确定)或逻辑树或可视树中向上的任何给定元素可能已被取消设置,这意味着数据绑定、资源引用和样式可能已被取消设置。未设置为其正常值或最后已知的运行时值。

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

WPF 将 FrameworkElement 事件绑定到命令 的相关文章

随机推荐

  • 有没有办法通过添加带有情感的元素来增加特异性?

    我们有一个样式化的组件 当它编译时 它会添加一个类名 如下所示 div class app a class css hash link a div 这一切都很好 除了有人声明了类似于以下内容的 CSS 的情况 app a color red
  • bash getopts 具有多个强制选项

    是否可以使用 getopts 一起处理多个选项 例如 myscript iR 或 myscript irv 另外 我遇 到的情况是 基于条件脚本需要强制选项 例如 如果脚本的参数是一个目录 我将需要指定 R 或 r 选项以及任何其他选项 m
  • 如何在 Android 版 Genymotion 模拟器中拨打来电?

    我如何拨打电话根尼运动 https www genymotion com 安卓模拟器 我正在使用 Genymotion 模拟器来运行和测试我的应用程序 在本机模拟器DDMS中 我们可以进行假调用 这可以使用 Genymotion 模拟器来完
  • 为用户定义的枚举重写 std::to_string 是为用户定义的枚举提供 to_string 的正确方法吗?

    C 没有办法获取枚举的字符串表示形式 人们通过编写包含大量样板代码的自定义函数来解决这个问题 switch with case XYZ return XYZ 当然 这需要枚举的用户知道自定义函数的名称 所以我想我可以添加一个专业std to
  • 指令测试中的 $apply 与 $digest

    如果我有一个指令响应范围内特定属性的状态 并且我想在测试中更改该属性并验证它是否正确响应 那么执行该更改的最佳方法是什么 我见过这两种模式 scope apply function scope myAttribute true and sc
  • 使用 sed 更改文件中行的位置

    我想知道如何更改文件中行的位置 最好使用 sed 例如 考虑包含 goal identifier statement let statement 1 let statement 2 forall statement other statem
  • Swift 5 中的异或?

    我正在尝试在 Swift 5 中执行 XOR 操作 文档似乎没有明确提到使用两个布尔值进行此操作 https docs swift org swift book LanguageGuide AdvancedOperators html ht
  • DateTimeFormatter 在格式化后添加至今的年份[重复]

    这个问题在这里已经有答案了 我正在尝试转换日期格式2019 12 30到有格式的日期30 12 2019为此我想使用DateTimeFormatter我有以下代码 LocalDate date LocalDate parse 2019 12
  • Summernote 中的转义 HTML

    我正在使用名为 Summernote 的所见即所得 wysiwyg 我将其值发送到服务器 并在服务器上使用 HTML Purifier 对其进行净化 之后我将其保存到数据库 mysql 然后 我需要在所见即所得中显示纯化的 html 因此将
  • strtol() 返回错误值

    我这里有一个奇怪的 当我传入以下字符串时 strtol atol 和 atoi 都会返回错误的值 long test strtol 3087663490 p 10 根据我的调试器 它返回 2147483647 我完全被难住了 有什么建议吗
  • Rstudio loadNamespace(name) 中的 Rstudio knit pdf:没有名为“rmarkdown”的包

    我刚刚更新到 Rstudio 版本 0 98 1074 当我尝试使用带有脚本的编译笔记本或带有 rmd 的 Knit pdf 时 我得到 loadNamespace 错误错误 没有名为 rmarkdown 的包 但我可以打字rmarkdow
  • Outlook MailItem:如何区分邮件是传入还是传出?

    我正在用 C 编写 VSTO Outlook 插件 我需要区分给定的 MailItem 是传入还是传出 或者两者都不是 例如当它是草稿时 有什么万无一失的方法可以做到这一点吗 我现在拥有的最佳解决方案是获取收件人 抄送和密送的列表 从活动帐
  • 由正方形网格组成的多边形

    我正在寻找一种算法来查找围绕连续的没有孔的正方形网格的多边形 如下所示 我已经让每个网格方块存储有关它们组成的周围区域的边缘类型的数据 即顶部 右上角 顶部底部 无边缘等 所以我认为这数据可以被算法利用 如果有人可以为这种算法提供一些伪代码
  • 如何像 SQL 连接一样使用 OData Expand?

    我试图弄清楚如何完成相当于 select from Users u inner join Comments c on c UserId u Id where Id 1569 表别名以获得更好的 SQL 可读性 在 StackOverflow
  • MAMP mySQL Snow Leopard 中的 Ruby On Rails

    我正在尝试找到在 MAMP 服务器上运行 Ruby on Rails 并使用 MAMP 的 mySQL 数据库的分步说明 我也在雪豹上 我已经阅读了 Hivelogic 的相关文章 但我真的不想编译rails ruby 和mySQL 大家有
  • 如何在mathematica中任意指定线条的粗细或点的大小

    我知道有一些选择 例如PointSize Large or PlotStyle gt Thick 但是如果我想要更大或更厚怎么办 谢谢 PointSize number 相对于图像的大小 AbsolutePointSize number 绝
  • 不使用 Visual Studio GUI 设计器(工具箱)构建 C# GUI

    在 Java Swing 中 我们只需编写 Java 代码即可创建 GUI 例如在 Eclipse 中 使用 NetBeans 工具箱将组件拖放到 UI 是可选的 我想知道C 中是否有相同的概念 我可以将组件放入 GUI 中并仅通过编码来添
  • 如何将一系列数组元素克隆到新数组?

    我有一个包含 10 个元素的数组 X 我想创建一个新数组 其中包含 X 中从索引 3 开始到索引 7 结束的所有元素 当然 我可以轻松编写一个循环来为我完成此操作 但我想让我的代码尽可能干净 C 中有没有一种方法可以帮我做到这一点 类似于
  • bash 如何从管道输入或命令行参数中读取

    我想从管道或命令行参数读取一些数据 比如 1 以提供的为准 优先考虑管道 该片段告诉我管道是否打开 但我不知道要在里面放什么以免阻塞脚本 test sh 使用read or cat if t 0 then echo nopipe DATA
  • WPF 将 FrameworkElement 事件绑定到命令

    我怎样才能绑定一个UserControl s FrameworkElement事件到视图模型命令 我使用 MVVM 和 Prism 因此视图和视图模型之间的清晰分离会很好 我尝试了多种方法 但都不起作用