在我的WPF菜单中,我有一个分隔符(System.Windows.Controls.Separator
)项,在通过箭头键导航菜单时似乎无形地接受焦点。我希望箭头导航路径跳过这些分隔符。我尝试设置IsEnabled
并将IsTabStop
设置为false
,但这些似乎都没有任何效果。
在XAML中,如何指定应跳过分隔符项?
更新:这是我的分隔符的当前样式XAML:
<Style TargetType="{x:Type Separator}">
<Setter Property="Focusable" Value="false" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="IsTabStop" Value="false" />
<Setter Property="IsHitTestVisible" Value="false" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Border BorderThickness="1"
Margin="10,5,10,5">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
<GradientStop Color="{DynamicResource Nui10Color}" Offset="0"/>
<GradientStop Color="{DynamicResource Nui50Color}" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:2)
我明白了。我需要在MenuItem本身上设置Focusable,而不是模板:
<!-- style for menu item separators -->
<Style TargetType="{x:Type MenuItem}"
BasedOn="{StaticResource {x:Type MenuItem}}"
x:Key="MenuItemStyleSeparator">
<!-- the following line is what I needed -->
<Setter Property="Focusable" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Separator IsEnabled="false" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:1)
尝试在其上设置IsHitTestVisible="False"
。它应该禁止所有命中测试