WPF выровнять пункты меню - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу выровнять пункты меню по центру по вертикали. Но VerticalAlignment не работает, и, наконец, он выглядит как

<Menu Background="{x:Null}" Style="{StaticResource m_menu_Menu}">
    <StackPanel Orientation="Horizontal">
        <materialDesign:PackIcon Kind="PlusCircle" Style="{StaticResource m_top_menu_materialDesign_Farm}" Height="43"  Width="45"/>
        <MenuItem x:Name="m_addWork" Header="{DynamicResource loc_menu_top_Add}" />
        <materialDesign:PackIcon Kind="ChevronDown" Style="{StaticResource m_top_menu_materialDesign_Farm}"/>
    </StackPanel>
</Menu>

enter image description here

Я хочу охладить выделение ячеек, как, но выравнивание и внешний вид выбора заголовка выглядят ужасно. Как я могу исправить проблему с вертикальным выравниванием?

enter image description here

После некоторых изменений у меня есть:

        <Style TargetType="Menu"  x:Key="m_menu_Menu">
            <Setter Property="FontSize" Value="18"></Setter>
            <Setter Property="FontFamily" Value="Roboto"></Setter>
            <Setter Property="FontWeight" Value="Bold"></Setter>
            <Setter Property="Foreground" Value="White"></Setter>
        </Style>
        <Style TargetType="materialDesign:PackIcon" x:Key="m_top_menu_materialDesign_Farm">
            <Setter Property="Width" Value="30"></Setter>
            <Setter Property="Height" Value="30"></Setter>
            <Setter Property="VerticalAlignment" Value="Center"></Setter>
            <Setter Property="HorizontalAlignment" Value="Center"></Setter>
            <Setter Property="Foreground" Value="White"></Setter>
        </Style>
<Menu Background="{x:Null}" Style="{StaticResource m_menu_Menu}" VerticalAlignment="Center">
    <StackPanel Orientation="Horizontal">
        <materialDesign:PackIcon Kind="PlusCircle" Style="{StaticResource m_top_menu_materialDesign_Farm}" Height="43"  Width="45"/>
        <MenuItem x:Name="m_addWork" Header="Add" />
        <materialDesign:PackIcon Kind="ChevronDown" Style="{StaticResource m_top_menu_materialDesign_Farm}"/>
    </StackPanel>
</Menu>

Но это выглядит некрасиво :

enter image description here

1 Ответ

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

Я решаю основную проблему с помощью MenuItem.Header и внутренней StackPanel. Код:

    <Style TargetType="Menu"  x:Key="m_menu_Menu">
        <Setter Property="FontSize" Value="18"></Setter>
        <Setter Property="FontFamily" Value="Roboto"></Setter>
        <Setter Property="FontWeight" Value="Bold"></Setter>
        <Setter Property="Foreground" Value="White"></Setter>
    </Style>
    <Style TargetType="TextBlock"  x:Key="m_top_menu_TextBlock_Farm">
        <Setter Property="FontSize" Value="18"></Setter>
        <Setter Property="FontFamily" Value="Roboto"></Setter>
        <Setter Property="FontWeight" Value="Bold"></Setter>
        <Setter Property="Foreground" Value="White"></Setter>
        <Setter Property="VerticalAlignment" Value="Center"></Setter>
        <Setter Property="Margin" Value="0 0 10 0"></Setter>
    </Style>
    <Style TargetType="materialDesign:PackIcon" x:Key="m_top_menu_materialDesign_Farm">
        <Setter Property="Width" Value="30"></Setter>
        <Setter Property="Height" Value="30"></Setter>
        <Setter Property="VerticalAlignment" Value="Center"></Setter>
        <Setter Property="HorizontalAlignment" Value="Center"></Setter>
        <Setter Property="Foreground" Value="White"></Setter>
    </Style>
    <Menu Background="{x:Null}" Style="{StaticResource m_menu_Menu}" VerticalAlignment="Stretch">
        <MenuItem x:Name="m_addWork" Height="75">
            <MenuItem.Header>
                <StackPanel Orientation="Horizontal">
                    <materialDesign:PackIcon Kind="PlusCircle" Style="{StaticResource m_top_menu_materialDesign_Farm}" Height="43"  Width="45"/>
                    <TextBlock Text="Add" Style="{StaticResource m_top_menu_TextBlock_Farm}"/>
                    <materialDesign:PackIcon Kind="ChevronDown" Style="{StaticResource m_top_menu_materialDesign_Farm}"/>
                </StackPanel>
            </MenuItem.Header>
        </MenuItem>
    </Menu>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...