2015-04-22 5 views
-1

J'ai un projet avec un contrôle Silverlight Templated. Lorsque j'ajoute la DLL du projet (avec contrôle basé sur des modèles) dans mon MainPage et que vous souhaitez ouvrir le menu contextuel avec un clic droit, je reçois cette erreur:Silverlight Menu contextuel IsOpen Exception?

MainPage.xaml

<MyControls:Draw x:Name="ctrDraw"></MyControls:Draw> 

Draw.cs (Templated Silverlight contrôle)

_contextMenu.IsOpen = true; --> Error 

ErrorMessage
errMsg "Unhandled Error in Silverlight Application 
Code: 4004  
Category: ManagedRuntimeError  
Message: Das Festlegen von Eigenschaft 'System.Windows.FrameworkElement.Style' hat eine Ausnahme ausgelöst." 
+0

Pouvez-vous donner plus de code source? J'essaie de déterminer si vous avez _contextMenu défini correctement – Pseudonym

+0

voir le code dans ma réponse. – fellowes22

Répondre

1

Init:

private ContextMenu _contextMenu; 
private MenuItem _contextMenuItem; 

événement:

private void map_MouseRightButtonUp(object sender, GraphicMouseButtonEventArgs e) 
{ 
_contextMenu = new ContextMenu(); 

_contextMenuItem = new MenuItem(); 
_contextMenuItem.Header = "Edit"; 
_contextMenu.Items.Add(_contextMenuItem); 
_contextMenuItem.Click += new RoutedEventHandler(menuItem_Click); 

.....

0

Je ne me souviens pas exactement, mais vous pouvez trouver la classe "ContextMenuService" et essayer mis comme:

ContextMenuService.SetContextMenu(ctrDraw, _contextMenu) 
+0

La méthode IsOpen fonctionne si je crée directement un ContextMenu dans le fichier de la page principale. Lorsque j'ajoute une DLL (mon propre contrôle) à mon projet et cela inclut un menu contextuel, il se bloque. – fellowes22