Создать вертикальное меню в Wpf - PullRequest
14 голосов
/ 28 октября 2011

Как можно создать вертикальное меню в левой части окна в Visual Studio (в формате wpf) с xaml, как в http://www.wpftutorial.net/? Я пробую код:

<Menu DockPanel.Dock="Left" VerticalAlignment="Top" Background="Gray" BorderBrush="Black">

но это не является задачей, так как в верхней части отображается горизонтальное меню.

Это не обязательно должно быть сделано с помощью меню управления.Если подходит какой-либо другой элемент управления с аналогичным внешним видом, он приемлем.

Ответы [ 3 ]

50 голосов
/ 28 октября 2011

Конечно, просто измените MenuItem.ItemsPanel, чтобы использовать вертикальную панель стека вместо горизонтальной по умолчанию

<Menu>
    <Menu.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </Menu.ItemsPanel>

</Menu>
1 голос
/ 11 сентября 2015

Принятый ответ - это хорошо.Но это хороший способ получить хорошую боковую панель.вы можете использовать этот элемент управления, если вам сейчас нужно рабочее меню.

https://github.com/beto-rodriguez/MaterialMenu

вы также можете установить его из nuget.

вот пример

<materialMenu:SideMenu HorizontalAlignment="Left" x:Name="Menu"
                           MenuWidth="300"
                           Theme="Default"
                           State="Hidden">
        <materialMenu:SideMenu.Menu>
            <ScrollViewer VerticalScrollBarVisibility="Hidden">
                <StackPanel Orientation="Vertical">
                    <Border Background="#337AB5">
                        <Grid Margin="10">
                            <TextBox Height="150" BorderThickness="0" Background="Transparent"
                                VerticalContentAlignment="Bottom" FontFamily="Calibri" FontSize="18"
                                Foreground="WhiteSmoke" FontWeight="Bold">Welcome</TextBox>
                        </Grid>
                    </Border>
                    <materialMenu:MenuButton Text="Administration"></materialMenu:MenuButton>
                    <materialMenu:MenuButton Text="Packing"></materialMenu:MenuButton>
                    <materialMenu:MenuButton Text="Logistics"></materialMenu:MenuButton>
                </StackPanel>
            </ScrollViewer>
        </materialMenu:SideMenu.Menu>
    </materialMenu:SideMenu>
0 голосов
/ 16 мая 2019

Вы можете отрегулировать ItemsPanel, используя стиль (который, как мне кажется, намного больше wpf-ish)

<Window.Resources>
        <Style TargetType="Menu" x:Key="Horizontal">
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <StackPanel VerticalAlignment="Center"/>
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
        </Style>
<Window.Resources>

VerticalAlignment = "Center" есть для целей украшения, вы можетеОбязательно пропустите.

затем в коде меню

<Menu Style="{StaticResource Horizontal}">
    ...
</Menu>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...