【问题标题】:How to bind event to event handler of the member field or property using XAML?如何使用 XAML 将事件绑定到成员字段或属性的事件处理程序?
【发布时间】:2011-05-21 15:36:23
【问题描述】:

假设我有窗口,我想处理 Closed 事件。这是微不足道的:

Closed="Window_Closed"

这假设我的窗口中有 Window_Closed 事件处理程序。但是如果我有一个成员(字段)怎么办

public MySophisticatedEventHandler event_handler { private set; get; }

在我的窗口中,我想这样设置:

Closed="event_handler.Window_Closed"

'event_handler.Window_Closed' 不是 有效的事件处理方法名称。仅有的 生成的实例方法或 代码隐藏类是有效的。

问题 -- 有没有使用 XAML 的巧妙方法?现在我在代码中设置它,但我更喜欢 XAML 来处理这些事情。

编辑

1

仅作记录。在代码中您只需编写:

Closed += event_handler.Window_Closed;

IOW,我正在寻找 XAML 的直接等效项。

【问题讨论】:

    标签: c# wpf xaml event-handling


    【解决方案1】:

    我通常会做的是将复杂的方法放在我的 ViewModel 中,然后从视图后面的代码中调用它。您可以使用commanding 通过 XAML 绑定到命令,但 IMO 通常不值得努力,除非您使用内置命令之一。

    【讨论】:

    • 假设“复杂”的事件处理程序位于库中(不是您的)。我想做的就是绑定到它——因为我可以用代码中的一条指令来做,我希望我也可以用 XAML 来做,而不引入抽象层(如 VM),因为它是一种矫枉过正。
    【解决方案2】:

    您不能在 4.5 之前的 WPF 上使用,因为事件处理程序不支持标记扩展。但是对于 4.5,您可能会检查 here 以获得解释,并检查 here 以获得实施

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多