MenuFlyout とは?
WinUI 3で利用できるMenuFlyoutは、コンテキストメニューやポップアップメニューを簡単に実装できる便利なUI要素です。通常は右クリックや長押しで表示されますが、C#コードからも任意のタイミングで表示することが可能です。
ShowAtメソッドを使ってMenuFlyoutを表示する
MenuFlyout.ShowAtを使えば、指定したUI要素に対して任意の位置にメニューを表示できます。以下にサンプルコードを紹介します。
XAMLコード
<Grid Width="200" Height="200" Background="BlueViolet" x:Name="g1">
<Grid.ContextFlyout>
<MenuFlyout x:Name="m1">
<MenuFlyoutItem Text="右クリック メニュー1" />
<MenuFlyoutItem Text="右クリック メニュー2" />
</MenuFlyout>
</Grid.ContextFlyout>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">右クリック</TextBlock>
</Grid>
<Button Content="メニューを開く" Click="myButton_Click" />
C#コード
private void myButton_Click(object sender, RoutedEventArgs e)
{
DispatcherQueue.TryEnqueue(() =>
{
try
{
var options = new FlyoutShowOptions
{
Position = new Point(0, 0),
Placement = FlyoutPlacementMode.Top
};
m1.ShowAt(null, options);
}
catch (Exception ex)
{
Debug.WriteLine($"{ex.Message}");
}
});
}
ポイント: ShowAt(null, options) とすることで、FlyoutShowOptions.Position に基づいた位置に表示されます。相対対象がないため絶対位置的な扱いになります。
まとめ
- MenuFlyout は WinUI 3 で便利なポップアップメニュー
ShowAt()とFlyoutShowOptionsを使えば任意の位置に表示可能- UIスレッド内で
DispatcherQueue.TryEnqueueを使うのがポイント
WinUI 3 / XAML の Grid.Width 設定方法
WinUI 3でMenuFlyoutをShowAtで表示する方法【コード付き解説】
MenuFlyout は WinUI 3 で便利なポップアップメニュー
WinUI 3の開発で混乱しがちな「空白のウィンドウ」と「空白のページ」の違い
PowerShellでMSIXアプリ(Storeアプリ)を起動する方法|AppUserModelIdとURIスキーム活用術
Microsoft Storeアプリ更新時のロールアウト設定まとめ
Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法
Microsoft Authenticatorのオートフィル機能が2025年7月に終了
RuntimeBroker.exeとMsEdgeWebView2.exeとは?Windows 11のプロセスについて
PowerShellでGrapheme Clusterについて処理を考える
【Windows】Volta コマンドライン インストール | Node.jsをバージョン管理する方法
【C#】大容量ファイルを指定サイズ以下に分割する方法|.NET8対応コード付き
【C# .NET 8】ファイルから重複行を削除する2つの方法|Distinct vs HashSet
WinUI 3 ComboBoxの自作クラスバインドと選択イベント検出方法
System.Text.Json 9.0.0.0 で FileNotFoundException
C#で改行・カンマ入りのCSVを正しく読み込む方法【.NET8対応】
C#/.NET 8でDateTimeを日本時間でISO 8601形式に変換する方法