코드 뒤에서 코드를 작성하는 것이 훨씬 쉽습니다. 이 방법을 확인하면, 샘플 코드의 매우 쉬운 조각 : 분명히
ContextMenu cm = new ContextMenu();
cm.Items.Clear();
MenuItem mi;
mi = new MenuItem();
mi.Header = "myHeader";
mi.Click += new RoutedEventHandler(menuItemAlways_Click);
cm.Items.Add(mi); //this item will always show up
if(someCondition())
{
mi = new MenuItem();
mi.Header = "myConditionalHeader";
mi.Click += new RoutedEventHandler(menuItemConditional_Click);
cm.Items.Add(mi); //This item will show up given someCondition();
}
cm.IsOpen = true;
아주 단순한 예,하지만 그것은 뒤에 코드에서 수행하는 것이 얼마나 쉬운 지 보여줍니다.
편집 : 귀하의 코멘트에 대한 답변에서, 여기 좀 명확하게해야 내가 마지막으로 사용되는 방법 ...
//raised upon an event, ie. a right click on a given control
private void DisplayContextMenu(object sender, MouseButtonEventArgs e)
{
ContextMenu cm = GetAssetContextMenu()
//Method which builds context menu. Could pass in a control (like a listView for example)
cm.IsOpen = true;
}
private ContextMenu GetContextMenu()
{
ContextMenu cm = new ContextMenu();
//build context menu
return cm;
}
입니다. 분명히 GetContextMenu() 메소드는 어떤 종류의 prorgam 상태를 가져올 수있는 매개 변수를 취할 것입니다. 예를 들어 listView를 클릭하면 "listView.SelectedItem"에 대한 값을 얻을 수 있습니다. 조건부 컨텍스트 메뉴를 빌드하십시오. 나는 이것이 분명해지기를 희망하며, 나는 지금 조금 안개가 낀다.
코드 예를 보내 주셔서 감사합니다! 이 생성 된 컨텍스트 메뉴를 페이지의 특정 객체에 연결하는 방법을 알려주십시오. – rem
XAML에서 빈 ContextMenu를 만들고 "ContextMenuOpening"이벤트 핸들러에서 메뉴 항목을 만들어야합니까? – rem
감사합니다. MouseRightButtonDown 이벤트에서 열리는 상황에 맞는 메뉴가 잠깐 동안 열리고 왜 깜박 거리는 지 말해 주시겠습니까? "cm.IsOpen = true;"이외에 무엇을해야합니까? – rem