可以使用 WPF 中的 Menu 和 TabControl 控件实现这个需求。

首先,我们在 Menu 控件中添加第一项作为弹出下拉菜单,并在该项下添加多个 MenuItem,作为下拉菜单中的选项。在其他项中添加 MenuItem,作为切换选项卡的按钮。

接着,在 TabControl 控件中添加多个 TabItem,作为不同选项卡的内容。每个 TabItem 可以包含任意的 WPF 控件,用于显示不同的内容。

最后,处理 Menu 和 MenuItem 的 Click 事件,以及 TabControl 的 SelectionChanged 事件,实现菜单下拉选项的响应和选项卡的切换。

下面是一个简单的示例代码:

<Window>
    <Grid>
        <Menu>
            <MenuItem Header='File'>
                <MenuItem Header='New'/>
                <MenuItem Header='Open'/>
                <MenuItem Header='Save'/>
            </MenuItem>
            <MenuItem Header='View' Click='MenuItem_Click'>
                <MenuItem Header='Tab 1'/>
                <MenuItem Header='Tab 2'/>
                <MenuItem Header='Tab 3'/>
            </MenuItem>
        </Menu>
        <TabControl SelectionChanged='TabControl_SelectionChanged'>
            <TabItem Header='Tab 1'>
                <TextBlock Text='Content of Tab 1'/>
            </TabItem>
            <TabItem Header='Tab 2'>
                <TextBlock Text='Content of Tab 2'/>
            </TabItem>
            <TabItem Header='Tab 3'>
                <TextBlock Text='Content of Tab 3'/>
            </TabItem>
        </TabControl>
    </Grid>
</Window>
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    MenuItem menuItem = e.Source as MenuItem;
    if (menuItem != null)
    {
        string tabHeader = menuItem.Header.ToString();
        foreach (TabItem tab in tabControl.Items)
        {
            if (tab.Header.ToString() == tabHeader)
            {
                tabControl.SelectedItem = tab;
                break;
            }
        }
    }
}

private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MenuItem menuItem = viewMenuItem as MenuItem;
    if (menuItem != null)
    {
        menuItem.Header = (tabControl.SelectedItem as TabItem).Header;
    }
}
WPF 菜单栏实现下拉菜单和选项卡切换

原文地址: https://www.cveoy.top/t/topic/mT7p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录