2010-12-28 12 views
4

私はページ上の要素を動的に読み込みます(XMLファイルの内容を読み込みます)。動的コンテンツはStackPanelにロードされます。コンテンツの各要素はTextBlockと1つの他のUI要素で構成されているため、各ペアに対して新しいStackPanelを作成してからStackPanelに追加します。コードは次のようになります。プログラムでWP7 ContextMenuを追加する

TextBlock header = new TextBlock() { 
     Text = "Heading 1", 
     HorizontalAlignment = HorizontalAlignment.Stretch, 
     VerticalAlignment = VerticalAlignment.Top, 
     Foreground = (SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"], 
     }; 
TextBox item = new TextBox() { 
     HorizontalAlignment = HorizontalAlignment.Stretch, 
     VerticalAlignment = VerticalAlignment.Top, 
     }; 
StackPanel sp = new StackPanel(); 
sp.Children.Add(header); 
sp.Children.Add(item); 

parentSP.Children.Add(sp); 

私はこのStackPanelsp、ないparentSP)にContextMenuを追加したいです。ファイルから読み込まれたいくつかのパラメータに応じて、2つの異なるコンテキストメニューのいずれかになる可能性があります。私は、次のことを試してみましたが、それは動作していない:

ContextMenu cm = new ContextMenu(); 
    RoutedEventHandler clickHandler = new RoutedEventHandler(OnContextMenuClicked); 

    // Add "edit" entry 
    MenuItem menuItem = new MenuItem() { 
     Header = "edit", 
     Tag = "edit", 
    }; 

    menuItem.Click += clickHandler; 
    cm.Items.Add(menuItem); 

    // Add "delete" entry 
    menuItem = new MenuItem() { 
     Header = "delete", 
     Tag = "delete", 
    }; 

    menuItem.Click += clickHandler; 
    cm.Items.Add(menuItem); 

    parentSP.Children.Add(cm); 

私はプログラム的StackPanelにコンテキストメニューを追加するにはどうすればよいですか?

また、この問題を解決するには良い方法がありますか? XAMLリソースセクションに2種類のコンテキストメニューを格納し、必要に応じて追加することで私は、「プロパティ要素は、別のプロパティ要素の直接の子にすることはできません」と言って、あなたの助けを事前に

おかげ

答えて

9
ContextMenuService.SetContextMenu(sp, cm); 
+2

を思い、親のStackPanel.Resourceセクションにコンテキストメニューを追加することでこれをやってみましたが、エラーが発生しました彼の他の質問へのいくつかの答えを得るのもいいです... – swinefeaster

関連する問題