Как сохранить пункт подменю меню открытым?
Я пытаюсь создать довольно сложный пункт меню, который позволил бы пользователю создать новый класс. Проблема, с которой я работаю, состоит в том, что когда я нажимаю на числовой вверх-вниз (из набора инструментов 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
Свойство достичь этого