我正在编写一个在工作中使用的应用程序来显示有用的信息。我的工作是对不同州的多个站点的计算机进行故障排除。应用程序分为按钮列表,每个状态一个,以及该状态的站点的子菜单列表框。按钮位于应用程序的左侧,ListBox菜单打开到按钮的右侧。我已经模仿了菜单按钮和列表框以获得一致性。 On Button MouseEnter一个故事板运行,显示站点的ListBox。如果鼠标在菜单上移动,菜单将保持打开状态,直到鼠标离开。问题是如果鼠标没有进入菜单并且只是移动按钮,则每个按钮菜单都会打开,但是在鼠标悬停在菜单上然后离开之前不会关闭。 菜单只应在调用它的按钮或菜单本身时打开,并在输入其他按钮时关闭。我想到了一个条件,如果鼠标没有超过“按钮1或菜单1”然后关闭“菜单1”,依此类推每个按钮/菜单组合,但我不知道该怎么做。
我认为可以用我的ListBox样式中的多重触发器来完成,但我不确定如何。我可以执行MouseLeave事件触发器但不确定如何声明鼠标不在菜单上的Button上。我对编程很陌生,非常想要一些帮助。
答案 0 :(得分:0)
我认为不是最好的方式。但你可以试试这个。
IsMouseOver
属性。二。在每个按钮中,您应该在Style
中添加MultiDataTrigger
Style.Triggers
。 Butt1IsMouseOver
和Menu1IsMouseOver
是这些绑定属性。
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Butt1IsMouseOver}" Value="False" />
<Condition Binding="{Binding Menu1IsMouseOver}" Value="False" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard />
<!-- close animation -->
</BeginStoryboard>
</MultiDataTrigger.EnterActions>
<MultiDataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard/>
<!-- open animation-->
</BeginStoryboard>
</MultiDataTrigger.ExitActions>
</MultiDataTrigger>
</Style.Triggers>