Widnows 8で以下のようなプルダウンメニューを見ることがあります。
ComboBoxのスタイルを修正したものだとずっと思っていたんですが、これPopupMenuクラスで実現します。
ボタンを押した際に画像のようなメニューを表示する方法は以下、
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
var menu = new PopupMenu();
menu.Commands.Add(new UICommand("コマンド1", (command) =>
{
this.resultText.Text = "コマンド1を選択しました";
}));
menu.Commands.Add(new UICommand("コマンド2", (command) =>
{
this.resultText.Text = "コマンド2を選択しました";
}));
// ここでセパレーターを追加
menu.Commands.Add(new UICommandSeparator());
menu.Commands.Add(new UICommand("コマンド3", (command) =>
{
this.resultText.Text = "コマンド3を選択しました";
}));
var chosenCommand = await menu.ShowForSelectionAsync(GetElementRect((FrameworkElement)sender));
}
public static Rect GetElementRect(FrameworkElement element)
{
GeneralTransform buttonTransform = element.TransformToVisual(null);
Point point = buttonTransform.TransformPoint(new Point());
return new Rect(point, new Size(element.ActualWidth, element.ActualHeight));
}
ComboBoxでこれやろうとしてすごい時間を費やしてしまいました・・・
Please give us your valuable comment