C# WPF在MouseLeave事件上运行故事板
我正在写一个在工作中使用的应用程序来显示有用的信息。我的工作是对位于不同州的多个站点的计算机进行故障排除。该应用程序分为按钮列表(每个状态一个)和处于该状态的站点的子菜单列表框。按钮位于应用程序的左侧,列表框菜单在按钮的右侧打开。我已经模板化了菜单按钮和列表框,以保持一致性。在按钮鼠标上,一个故事板运行,显示站点列表框。如果鼠标在菜单上移动,菜单将保持打开状态,直到鼠标离开。问题是,如果鼠标没有进入菜单,只是在按钮上移动,则每个按钮菜单都会打开,但不会关闭,直到您将鼠标移到菜单上,然后离开。 菜单只能在调用它的按钮或菜单本身上方打开,并在输入其他按钮时关闭。我考虑了一个条件,如果鼠标未在“按钮1或菜单1”上方,则关闭每个按钮/菜单组合的“菜单1”,依此类推,但我不确定如何操作C# WPF在MouseLeave事件上运行故事板,c#,wpf,mouseevent,expression-blend,C#,Wpf,Mouseevent,Expression Blend,我正在写一个在工作中使用的应用程序来显示有用的信息。我的工作是对位于不同州的多个站点的计算机进行故障排除。该应用程序分为按钮列表(每个状态一个)和处于该状态的站点的子菜单列表框。按钮位于应用程序的左侧,列表框菜单在按钮的右侧打开。我已经模板化了菜单按钮和列表框,以保持一致性。在按钮鼠标上,一个故事板运行,显示站点列表框。如果鼠标在菜单上移动,菜单将保持打开状态,直到鼠标离开。问题是,如果鼠标没有进入菜单,只是在按钮上移动,则每个按钮菜单都会打开,但不会关闭,直到您将鼠标移到菜单上,然后离开。 菜
我原以为可以用我的ListBox风格的multitrigger来完成,但我不确定该怎么做。我可以执行MouseLeave事件触发器,但不确定如何声明鼠标未位于菜单中的按钮上方。我对编程非常陌生,非常希望得到一些帮助。我认为这不是最好的方式。但是你可以试试这个
- 首先。您应该将一些属性绑定到按钮和列表框菜单
propertiesIsMouseOver
- 第二。在每个按钮中,您应该在
Style.Triggers中添加
和Style
,如下所示。这里的MultiDataTrigger
和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>
- 首先。您应该将一些属性绑定到按钮和列表框菜单
propertiesIsMouseOver
- 第二。在每个按钮中,您应该在
Style.Triggers中添加
和Style
,如下所示。这里的MultiDataTrigger
和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>
- 我认为这不是最好的方式。但是你可以试试这个