2012-04-23 2 views
3

ListViewで定義された項目のリストがあります。ユーザーがアイテムをクリックまたはタップすると、選択したアイテムのすぐ上にポップアップメニューが表示されます。 PopupMenuをどのように配置する必要がありますか?win 8メトロアプリの項目のすぐ上にコンテキストメニューを開く

varmenu =newPopupMenu(); 
menu.Commands.Add(
newUICommand("Remove", (x) => 
{... 
// Create the message dialog and set its content 
}, 1)); 

var chosenCommand  =awaitmenu.ShowForSelectionAsync(GetElementRect((FrameworkElement)sender)); 

Rect GetElementRect(FrameworkElement element) 
{  
    GeneralTransform buttonTransform = element.TransformToVisual(null); 
    Pointpoint = buttonTransform.TransformPoint(newPoint()); 
    returnnewRect(point,newSize(element.ActualWidth, element.ActualHeight)); 
} 

答えて

3

これは、アプリケーションバーのボタンの上にポップアップメニューを開くために使用しているコードです。

private async void OnOpenMenu(object sender, RoutedEventArgs e) 
{ 
    var button = (Button)sender; 
    var transform = button.TransformToVisual(this); 
    var point = transform.TransformPoint(new Point(0, 0)); 

    var menu = new PopupMenu(); 

    menu.Commands.Add(new UICommand("Menu Item 1")); 
    menu.Commands.Add(new UICommand("Menu Item 2")); 

    await menu.ShowAsync(point); 
} 
+0

ありがとうございます、私はこれを試してみましょうが、今はアイテムを選択しようとしていますが、削除ボタンを有効にするメニューが表示されています。そして、これははるかに良い1つのオプションを持つメニューを表示します:) – user1030947

+0

@Nigel私はテキストブロックの下にコンテキストを表示したい...しかし、上記のコードメニューを使用して、テキストブロックの上に表示されます。どんな助けでも大歓迎です。 – devson

+0

変換された点の数値を0から0に微調整できます。これにより、メニューの位置が変更されます。 –

関連する問題