极少数人有这个问题,他们无法React的子菜单项目,因为它关闭太快之前,鼠标可以到达子菜单。添加了一个GIF在底部。我们不能重现这种行为,它似乎影响极少数人。
我们使用Hardcodet.wpf.TaskbarIcon来显示菜单。任何想法都将受到欢迎。下面是一个代码片段,我只演示了一个菜单项,但其他菜单项遵循相同的逻辑:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tb="http://www.hardcodet.net/taskbar"
xmlns:local="clr-namespace:FreedomPlatform"
xmlns:converters="clr-namespace:FreedomPlatform.Converters">
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
<converters:InverseAndBooleanConverter x:Key="InverseAndBooleanConverter" />
<Style TargetType="{x:Type MenuItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<ContextMenu x:Key="FreedomTrayMenu" AutomationProperties.Name="Freedom">
<MenuItem Header="Options">
<MenuItem Header="Run on Startup" StaysOpenOnClick="True" IsCheckable="True" IsChecked="{Binding RunOnStartup}" IsEnabled="{Binding RunOnStartupModificationEnabled}" />
</MenuItem>
<Separator />
</ContextMenu>
<tb:TaskbarIcon x:Key="FreedomNotifyIcon"
IconSource="{Binding StatusIconPath}"
ContextMenu="{StaticResource FreedomTrayMenu}" MenuActivation="LeftOrRightClick" KeyUp="{Binding OnKeyUp}">
<!-- Self-assign a data context (could also be done programmatically) -->
<tb:TaskbarIcon.DataContext>
<local:StatusViewModel />
</tb:TaskbarIcon.DataContext>
</tb:TaskbarIcon>
</ResourceDictionary>
2条答案
按热度按时间5vf7fwbs1#
尝试在父MenuItem上设置OnMouseLeave,如下所示
然后添加名为ContextMenuHandler.cs的类
xienkqul2#
如果你想使用Hardcodet.Wpf.TaskbarIcon,请与编写TaskBarIcon的人交谈;)
如果没有,我建议你用
System.Windows.Forms.NotifyIcon
和写一些C#代码,here a question with a good answer,看到答案,接受,由Jesper Jensen。请注意,托盘中的图标是由Windows拥有的,WPF只是Windows exe的一个不同的UI,请注意,您可以通过C#代码使用NotifyIcon或Windows中任何您想要的东西。
NotifyIcon公开处理单击气球、图标、鼠标事件等的方法。