2010-12-28 8 views
4

페이지의 요소를 동적으로로드하고 있습니다 (XML 파일의 내용 읽기). 동적 내용은 StackPanel에로드됩니다. 콘텐츠의 각 요소는 TextBlock과 하나의 다른 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); 

내가이 StackPanel (sp하지 parentSP)에 ContextMenu를 추가 할; 파일에서 읽은 일부 매개 변수에 따라 두 가지 다른 상황에 맞는 메뉴 중 하나 일 수 있습니다. 나는 시도 다음 그러나 그것은 작동하지 않습니다 :

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 리소스 섹션에 두 가지 유형의 컨텍스트 메뉴를 저장하고 필요에 따라 추가하는 방법일까요? 나는 부모의 StackPanel.Resource 섹션에 컨텍스트 메뉴를 추가하여이 일을하려하지만 도움을 사전에

감사합니다 "A property 요소가 다른 property 요소의 직접적인 아이가 될 수 없습니다"라는 오류를 가지고

답변

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

겠습니까 그의 다른 질문들에 대한 답을 얻기에 너무 좋았습니다 ... – swinefeaster

관련 문제