【问题标题】:ToolStripDropDownButton equivalent in WPF?WPF中等效的ToolStripDropDownButton?
【发布时间】:2017-09-16 04:23:41
【问题描述】:

我是 WPF 技术的新手。我已经在 WinForms 中开发了大约 6 年。

现在我想通过学习 WPF 来提升我的技能一大步。我正在阅读 MSDN 中的介绍指南,而作为个人练习,我正在尝试将 WinForms UI 的结构转换为其等效的 WPF UI。

这是我想在 WPF 中重现的 WinForms 控件结构的简单模型:

我的问题是尝试重现 ToolStripDropDownButton 控件的等效控件/行为。

Windows Forms Controls and Equivalent WPF Controls 文章中,Microsoft 只是说 ToolStripDropDownButton 的等效控件是 ToolBar...具有组合。我完全不明白“与组合”是什么意思。我一直在阅读和试验 Toolbar,但没有找到在工具栏中添加下拉按钮的方法。

我的问题:有人可以指导我或向我展示一个简短示例,说明如何在工具栏中添加下拉按钮?

【问题讨论】:

  • @Reza Aghaei 感谢您的评论。我担心说它是一个“菜单”,乍一看并且从我的无知中说出来,它似乎是一个在单击按钮时显示的菜单,这可能意味着我将丢失/无法重现具有默认情况下在按钮右侧绘制一个箭头? (就像在 ToolStripDropDownButton 控件中一样),我将尝试该解决方案以查看最后的“菜单”是否可以具有作为下拉按钮的预期行为。再次感谢!
  • 不客气。根据您在 cmets 中的问题,我添加了一个代码示例,其中包含箭头按钮以及子菜单中托管的一些其他控件。

标签: .net wpf winforms toolstrip toolstripdropdown


【解决方案1】:

您可以在Toolbar 中添加MenuMenu 包含一些 MenuItem。每个MenuItem 都有一个Header,这是它的内容,可以是文本或其他元素。每个MenuItem 也可以有一些嵌套或MenuItems。例如,要有这样的菜单结构:

你可以使用这样的代码:

<ToolBar>
    <Menu Background="#00000000">
        <MenuItem >
            <MenuItem.Header>
                <StackPanel Orientation="Horizontal">
                    <TextBlock>Menu 1</TextBlock>
                    <Path VerticalAlignment="Center" Margin="8,2,0,0"
                          Fill="Black" Data="M 0 0 L 3 3 L 6 0 Z"/>
                </StackPanel>
            </MenuItem.Header>
            <MenuItem Header="Menu 1-1" >
                <MenuItem Header="Menu 1-1-1"/>
                <MenuItem Header="Menu 1-1-2"/>
            </MenuItem>
            <MenuItem Header="Menu 1-2"/>
            <MenuItem>
                <MenuItem.Header><TextBox Width="100"/></MenuItem.Header>
            </MenuItem>
            <MenuItem>
                <MenuItem.Header><DatePicker Width="100"/></MenuItem.Header>
            </MenuItem>
        </MenuItem>
        <MenuItem >
            <MenuItem.Header>
                <StackPanel Orientation="Horizontal">
                    <TextBlock>Menu 2</TextBlock>
                    <Path VerticalAlignment="Center" Margin="8,2,0,0" 
                          Fill="Black" Data="M 0 0 L 3 3 L 6 0 Z"/>
                </StackPanel>
            </MenuItem.Header>
            <MenuItem Header="Menu 2-1"/>
            <MenuItem Header="Menu 2-2"/>
            <MenuItem Header="Menu 2-3"/>
        </MenuItem>
        <MenuItem Header="Menu 3"/>
    </Menu>
</ToolBar>

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多