【问题标题】:MVVMLight: How to disconnect event handlerMVVMLight:如何断开事件处理程序
【发布时间】:2012-10-29 14:40:32
【问题描述】:

我使用 MVVMLight EventToCommand 将命令连接到 MouseEnter 事件:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseEnter">
        <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding DragHandleMouseEnterCommand}"  />
    </i:EventTrigger>
</i:Interaction.Triggers>  

如何以编程方式解除处理程序的挂钩?
viewObject.MouseEnter -= viewObject.GetViewModel().DragHandleMouseEtnerCommand 给出类型不匹配错误。

更新:看起来我需要以某种方式使用 viewObject.Triggers 集合。建议...?
更新二:不,触发器集合中没有任何内容....

感谢您的任何见解...

【问题讨论】:

    标签: silverlight-4.0 mvvm-light eventtocommand


    【解决方案1】:

    为什么不在视图模型中简单地将 DragHandleMouseEnterCommand 设置为 null?

    触发器会保留,但不会触发任何东西。如果您想重新激活命令,您只需要“新建”一个新命令并将其绑定到属性并调用 RaisePropertyChanged("DragHandleMouseEnterCommand")。

    【讨论】:

    • 好主意——感谢您的回复。不幸的是,其他事情仍在发生。将 Command 设置为 null 后(显然)不会调用该命令,但光标仍在更改。这个问题是相关的:goo.gl/VQoe3
    • FS:不确定什么代码有用。我们在 ViewModel 中有一个属性(WaitMode);当它设置为true时,我们将RelayCommand设置为null,并在WaitMode设置为false时创建一个新的RelayCommand。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2013-06-21
    • 1970-01-01
    • 2013-12-24
    • 2015-11-24
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多