我想做的基本上是为触发事件设置条件。我有一个具有以下行为的Grid
的自定义控件:
MouseOver
:另一个Opacity
的{{1}}(从现在起称为Grid
并置于触发的priorityFlag
上方)是从{ {1}}至priorityGrid
,其0
从100
设为Width
。10
:20
的{{1}}设置回MouseLeave
,其Opacity
设置回priorityFlag
。0
:用户单击Width
的行之一,并通过命令更改10
的颜色。点击结束后,MouseUp
的{{1}}转到priorityFlag
,其priorityGrid
设置回priorityFlag
(基本上与{{ 1}}事件)。它工作正常,但是当发生Opacity
并且用户离开0
时,Width
事件被触发,并且我得到以下行为(您可以看到我将鼠标悬停在10
上几次,然后更改优先级颜色):
如您所见,MouseLeave
事件引起了令人讨厌的闪烁效果。
我想知道的是:我可以调节触发器,以避免属性更改吗?在我看来,没有参数允许我这样做...
这是自定义控件XAML代码:
MouseUp
有人可以帮助我吗?预先感谢您的帮助。
答案 0 :(得分:1)
看起来,当您触发MouseUp触发器时,它也会触发MouseOver触发器。因此,priorityFlag的宽度在同一时间两次更改为20。显然,当您将鼠标移开时,它两次变回,一次(i)通过MouseLeave,一次(ii)通过MouseUp的单击结束,基本上也是在同一时间,这会导致闪烁。
您可以在包含所有鼠标事件的类中定义一个私有标志属性,当priorityFlag的Width设置为20时,将其设置为true,并在将该标志再次设置为20之前对其进行测试。或者,您可以在任何鼠标触发的事件中更改当前宽度之前先对其进行测试。