2010-12-28 3 views
4

Je charge dynamiquement des éléments sur une page (en lisant le contenu d'un fichier XML). Le contenu dynamique est chargé dans un StackPanel. Chaque élément du contenu se compose d'un élément TextBlock et d'un autre élément d'interface utilisateur. Par conséquent, pour chaque paire, je crée un nouveau StackPanel qui est ensuite ajouté au parent StackPanel. Le code ressemble à ceci:Ajout de WP7 ContextMenu par programme

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); 

Je veux ajouter un ContextMenu à cette StackPanel (sp, non parentSP); en fonction de certains paramètres lus dans le fichier, il peut s'agir de l'un des 2 menus contextuels différents. J'ai essayé ce qui suit, mais il ne fonctionne pas:

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); 

Comment puis-je ajouter un menu contextuel au programme StackPanel?

De même, existe-t-il une meilleure façon de résoudre ce problème? Peut-être en stockant les 2 différents types de menus contextuels dans une section de ressources XAML et en les ajoutant au besoin? J'ai essayé de faire cela en ajoutant les menus contextuels à la section StackPanel.Resource du parent mais eu une erreur en disant: « Un élément de propriété ne peut pas être l'enfant direct d'un autre élément de propriété »

Merci d'avance pour votre aide

Répondre

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

Would J'ai été ravi d'avoir des réponses à ses autres questions ... – swinefeaster

Questions connexes