私はユーザーが新しいクラスを作成することができるやや複雑なメニュー項目を作成しようとしています。私が実行している問題は、(xceedツールキットから)数字の上下をクリックすると、メニュー項目が閉じ、プロパティーがStaysOpenOnClick
がtrueに設定されていても閉じるということです。メニューサブメニュー項目を開いたままにするにはどうしたらいいですか?
ユーザーはそれを好まないでしょう。
、再現WPFプロジェクトを作成し、NuGetを通じて拡張WPF Toolkitを追加するには、その後、あなたのメイン・ウィンドウクラスに次のコードをドロップ:
<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>
私はアップダウン整数のテキストフィールドをクリックし、メニューが閉じます。
なぜそれが起こっていますか?どうすればいいですかは起こりませんか?
を達成することができます。メニュー以外の要素がフルキーボードキャプチャ/フォーカスを取得しているため、まったく異なる一連のイベントがトリガーされる可能性があります。 IsSubMenuOpenの変更を傍受して取り消したり元に戻したりしようとするかもしれませんが、その試みは容認できない動作になりました。それは実際には開いたままにしていましたが。 – Daniel
他の何か、あなたはリソースにMenuItemのテンプレートを抽出し、あなたが制御する変数でこれを(ポップアップで)置き換えることができます:IsOpen = "{Binding IsSubmenuOpen、RelativeSource = {RelativeSource TemplatedParent}}" – Daniel
メニューを開いたままにすると、容認できない動作になります。メニューのいくつかの部分は、テキストフィールドからフォーカスを強制的にリッピングしています。これは私が日曜日に調査したいと思う以上のものですが、私はあなたに幸運を祈っています。私は上記が何らかの形であなたを助けてくれることを願っています。 – Daniel