所以这是设置。 我打电话给
m_CurrentDirectionBtn.RaiseEvent(new MouseEventArgs(Mouse.PrimaryDevice, 0)
{ RoutedEvent = Mouse.MouseEnterEvent});
在Button(m_CurrentDirectionBtn)上,而另一个元素(也是一个Button)具有MouseCapture。
我希望m_CurrentDirectionBtn做的事情与MouseCapture未打开且鼠标指针在它上面时的行为方式相同。 特别是我希望它能触发相同的风格:
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Effect" Value="{StaticResource MainHoverEffect}" />
</Trigger>
它没有这样做,IsMouseOver保持为假。
在你建议使用之前
<EventTrigger RoutedEvent="MouseEnter">
而不是
<Trigger Property="IsMouseOver"
我想说,虽然这对某些人来说可能是一种可行的解决方法,但对我来说这不是一个解决方案,所以它不会作为我的问题的答案。
显然,直接设置m_CurrentDirectionBtn的属性而不是让样式生效的事情也不会作为答案。
我想知道的是什么
1.为什么IsMouseOver没有设定? (一旦MouseEnter被触发,我确实检查了 - 它不是)
和
2.如何设置? (它是一个只读属性)。
要扩展#2,我不想使用一些小故障来设置IsMouseOver,例如通过反射按钮的私有方法(我找到了一种方法来为IsPressed做这样的例子):
typeof(Button).GetMethod("set_IsPressed",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.Invoke(m_CurrentDirectionBtn, new object[] { true });
那也不是。我正在寻找的是一种干净的方式,以编程方式产生相同的效果,就好像鼠标实际上在m_CurrentDirectionBtn上,但不必事先知道它具有什么样式,没有它可能以任何方式受到限制的样式。 / p>