【问题标题】:Silverlight: Event Handler IssueSilverlight:事件处理程序问题
【发布时间】:2010-03-09 16:10:58
【问题描述】:

所以我在一个页面上有一个网格,上面有几个用户控件。每个 UserControl 都注册了一个 MouseLeftButtonDown 事件,Grid 也是如此。在我将事件添加到网格之前,用户控件上的事件工作正常。但是现在我在网格上有事件,无论我点击哪里,只有网格事件会触发。没有一个 UseControls 正在捕获事件。

我需要做些什么来让 UserControls 上的 MouseLeftButtonDown 事件在 Grid 上仍有 MouseLeftButtonDown 事件时触发?

【问题讨论】:

    标签: silverlight event-handling


    【解决方案1】:

    你所描述的很不寻常。

    在这种情况下,两个事件都会触发通常会发生什么。由于MouseLeftButtonDown 是一个冒泡事件,当您单击用户控件时,它会触发其MouseLeftButtonDown,如果附加到它的处理程序没有将MouseButtonEventArgs 参数的Handled 属性设置为True,那么该事件将冒泡给父母等等。如果父控件也有代码附加到他们的MouseLeftButtonDown 事件代码也将运行。

    确定实际上 UserControl 事件没有触发,或者您碰巧观察到 Grid 事件一直在触发。如果您绝对确定将事件处理程序附加到 Grid 实际上会阻止 UserControl 事件触发,您是否可以使用小型 Repro 编辑您的问题,很难看出这是怎么回事。

    【讨论】:

    • 事实证明,该事件正在触发,但网格事件中的一个方法调用正在执行一些取消用户控件事件效果的操作,因此看起来它没有被调用。添加了一个简单的检查,以查看鼠标事件 args 的 OriginalSource 属性是否为 Grid,如果是,则执行必要的操作。
    猜你喜欢
    • 2011-05-16
    • 2021-11-13
    • 2018-08-18
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多