有非常少的人面临这个问题,他们无法响应子菜单项,因为鼠标在到达子菜单之前就关闭了。在底部添加了一个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>
MenuItem
时,它不会立即取消选择,而是会有一些延迟,这为子菜单保持打开状态直至鼠标进入提供了足够的时间。 - rucamzu