Цвет фона разделителя WPF остается серым - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть меню WPF с разделителем, который я бы хотел иметь черный и ширину 1 пиксель. Тем не менее, кажется, что разделитель имеет встроенное буферное пространство шириной 30 пикселей, на котором я не могу изменить цвет. В приведенном ниже примере я установил свой разделитель шириной 50 пикселей - как вы можете видеть, первые 30 пикселей не отражают правильный цвет фона. Очень назойливый! Что мне не хватает?

enter image description here

Вот XAML:

        <Menu DockPanel.Dock="Top" FontSize="45" Height="62" Name="Menu">
            <MenuItem Header="_Home" Name="HomeMenuItem" Click="HomeMenuItem_Click" Padding="10,0,10,0"></MenuItem>
            <Separator Width="50" Background="Black" Foreground="Black" BorderThickness="0" Margin="0" Padding="0"></Separator>
            <MenuItem Header="_Print" Name="PrintMenuItem" Click="PrintMenuItem_Click" Padding="10,0,10,0"></MenuItem>
            ...

1 Ответ

0 голосов
/ 14 февраля 2020

Получается, что шаблон ControlTemplate для меню автоматически включает поля для разделителя. Благодаря Rowbear теперь я понимаю, что ControlTemplate переопределяет стили. Решением было добавить собственный шаблон в Application.Resources. (Я уверен, что это было бы прекрасно работать в Windows .Resources и т. Д. c.)

    <Style x:Key="SeparatorStyle" TargetType="{x:Type Separator}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Separator}">
                    <Border Padding="0" Margin="0" BorderThickness="0" Background="#40000000"></Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Затем в главном окне XAML ссылается на пользовательский ControlTemplate, например так:

<Separator Width="1" Style="{StaticResource SeparatorStyle}"></Separator>
...