例えばVisual Studioで言えば「ファイル」メニューをクリックした後の、「新規作成」や「開く」はマウスオーバーで子メニューが開きますが、「ファイル」や「編集」のような(用語がわかりませんが)トップレベルのメニューもマウスオーバーで開きたいということでしょうか?
現状の動作はWindows標準ですから、このアプリだけマウスオーバーになってもかえって混乱しませんか?(私だったらイヤすぎますね^^;
OnMouseDownメソッドを呼び出す方針で実装していましたが、私の方針で実現可能か, または実現可能な他の方法を教えて頂きたいです。
イベントの捏造も不可能ではないでしょうが、そういうことを考える前にまず普通の方法でできないかを調べてください。
MenuItem.IsSubmenuOpen プロパティ (System.Windows.Controls) | Microsoft Docs
WPFのコントロール等のプロパティは「あ、それsetできるの!?」ってのが結構あります(逆にsetがほしいものになかったりもしますが^^;
xml
1<Window
2 x:Class="Questions361115.MainWindow"
3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5 Width="800"
6 Height="450">
7 <DockPanel>
8 <Menu DockPanel.Dock="Top">
9 <MenuItem Header="ファイル" MouseEnter="TopMenuItem_MouseEnter">
10 <MenuItem Header="新規作成">
11 <MenuItem Header="プロジェクト..." />
12 <MenuItem Header="リポジトリ..." />
13 <MenuItem Header="ファイル..." />
14 </MenuItem>
15 <MenuItem Header="開く">
16 <MenuItem Header="プロジェクト/ソリューション..." />
17 <MenuItem Header="フォルダー..." />
18 <MenuItem Header="ファイル..." />
19 </MenuItem>
20 <MenuItem Header="終了" />
21 </MenuItem>
22 <MenuItem Header="編集" MouseEnter="TopMenuItem_MouseEnter">
23 <MenuItem Command="ApplicationCommands.Copy" />
24 <MenuItem Command="ApplicationCommands.Cut" />
25 <MenuItem Command="ApplicationCommands.Paste" />
26 </MenuItem>
27 </Menu>
28 <TextBox />
29 </DockPanel>
30</Window>
cs
1using System.Windows;
2using System.Windows.Controls;
3using System.Windows.Input;
4
5namespace Questions361115
6{
7 public partial class MainWindow : Window
8 {
9 public MainWindow() => InitializeComponent();
10
11 private void TopMenuItem_MouseEnter(object sender, MouseEventArgs e)
12 {
13 if (sender is MenuItem menuItem)
14 {
15 menuItem.IsSubmenuOpen = true;
16 }
17 }
18 }
19}
参考サイト
DOBONさんはWPFネタは一切ないです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/24 09:46