убедитесь, что клавиши со стрелками пропускают разделители в меню WPF? - PullRequest
1 голос
/ 15 ноября 2011

В моем меню WPF есть разделитель (System.Windows.Controls.Separator), который, кажется, невидимо принимает фокус при навигации по меню с помощью клавиш со стрелками.Я хотел бы, чтобы путь навигации стрелки пропускал эти разделители.Я пытался установить IsEnabled и IsTabStop на false, но ни один из них, похоже, не имеет никакого эффекта.

В XAML, как я могу указать, что элементы разделителя следует пропускать?1007 *

ОБНОВЛЕНИЕ: Вот текущий стиль 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>

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Я понял это.Мне нужно было установить Focusable для самого MenuItem, а не для шаблона:

<!-- 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 голос
/ 16 ноября 2011

Попробуйте установить IsHitTestVisible="False" на них. Следует отключить их от всех хит-тестов

...