在 Wpf 中创建垂直菜单

发布于 2024-12-12 07:50:39 字数 357 浏览 0 评论 0原文

如何使用 xaml 在 Visual Studio(在 wpf 中)窗口的左侧创建一个垂直菜单,就像 http://">http:// /www.wpftutorial.net/?我尝试了代码:

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

但它没有完成任务,因为它在顶部呈现了一个水平菜单。

并不一定需要通过控制菜单来完成。如果任何其他具有类似外观的控件是合适的,则可以接受。

How is it possible to create a vertical menu on the left side of the window in Visual Studio (in a wpf) with xaml like the one in http://www.wpftutorial.net/? I try the code:

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

but it does not the task, since it presents a horizontal menu on the top.

It is not required to be done definitely by the control menu. If any other control with similar appearance is appropriate, it is acceptable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

快乐很简单 2024-12-19 07:50:39

当然,只需将 MenuItem.ItemsPanel 更改为使用垂直 StackPanel,而不是默认的水平 StackPanel

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

</Menu>

Sure, just change MenuItem.ItemsPanel to use a Vertical StackPanel instead of the Default Horizontal one

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

</Menu>
青丝拂面 2024-12-19 07:50:39

接受的答案很好。但要让侧边栏发挥作用还有很长的路要走。如果您现在需要的是工作菜单,则可以使用此控件。

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>

Accepted anwer is good. But it is a long way to get a good side bar working. you can use this control if what you need is a working menu now.

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

you can install it from nuget too.

here is an example

<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>
扛起拖把扫天下 2024-12-19 07:50:39

您可以使用 Style 调整 ItemsPanel(我觉得这更像是 wpf 风格),

<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>

You can adjust the ItemsPanel using Style (which I feel is much more 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>

the VerticalAlignment="Center" is there for beautification purposes, you can definitely skip it.

then in the menu code

<Menu Style="{StaticResource Horizontal}">
    ...
</Menu>
差↓一点笑了 2024-12-19 07:50:39

由于某种原因,该解决方案在 ModernWPF 中不适用于我,因此我在垂直 StackPanel 中使用了多个菜单:

<StackPanel Orientation="Vertical">
    <Menu>
        <MenuItem />
    </Menu>
    <Menu>
        <MenuItem />
    </Menu>
</StackPanel>

For some reason the solution didn't work for me in ModernWPF, so instead I used multiple menus in a vertical StackPanel:

<StackPanel Orientation="Vertical">
    <Menu>
        <MenuItem />
    </Menu>
    <Menu>
        <MenuItem />
    </Menu>
</StackPanel>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文