Как сохранить пункт подменю меню открытым?

Я пытаюсь создать довольно сложный пункт меню, который позволил бы пользователю создать новый класс. Проблема, с которой я работаю, состоит в том, что когда я нажимаю на числовой вверх-вниз (из набора инструментов xceed), пункт меню закрывается, даже со свойством StaysOpenOnClick установите в true.

Пользователям это не понравится.

Чтобы воспроизвести, создайте проект WPF и добавьте Extended WPF Toolkit через NuGet, а затем вставьте следующий код в класс mainwindow:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WhyDoesMyMenuItemCloseWhenClicked"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
    mc:Ignorable="d"
    x:Class="WhyDoesMyMenuItemCloseWhenClicked.MainWindow"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="21"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Menu FontWeight="Bold">
            <MenuItem Header="_File">
                <MenuItem StaysOpenOnClick="True">
                    <Grid Height="50" Width="50">
                        <xctk:IntegerUpDown/>
                    </Grid>
                </MenuItem>
            </MenuItem>
        </Menu>
    </Grid>
</Window> 

Когда я щелкаю текстовое поле целого числа вверх-вниз, меню закрывается.

Почему это происходит? Как я могу сделать так, чтобы это НЕ случилось?

2 ответа

Решение

Я нашел решение. Это своего рода ужасный обходной путь, но он выполняет свою работу довольно хорошо:

Изменение заключается в том, что вы создаете MenuItem в пределах MenuItem, Затем вы определяете свой контроль в суб MenuItem"s MenuItem.Header свойство, и установите это MenuItem"s StaysOpenOnClick свойство к истине.

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WhyDoesMyMenuItemCloseWhenClicked"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
    mc:Ignorable="d"
    x:Class="WhyDoesMyMenuItemCloseWhenClicked.MainWindow"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="21"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Menu FontWeight="Bold">
            <MenuItem Header="_File" StaysOpenOnClick="True">
                <MenuItem Header="_StaysOpenOnClick">
                    <MenuItem StaysOpenOnClick="True">
                        <MenuItem.Header>
                            <xctk:IntegerUpDown/>
                        </MenuItem.Header>
                    </MenuItem>
                </MenuItem>
            </MenuItem>
        </Menu>
    </Grid>
</Window>

Вы можете использовать StaysOpenOnClick Свойство достичь этого

Другие вопросы по тегам