10

Je reçois une erreur en essayant de construire un Application Silverlight sur une nouvelle machine. (Silverlight 4, Visual Studio 2010) Cette application compile sans erreur sur quatre autres machines."La balise 'MenuItem' n'existe pas dans l'espace de noms XML 'clr-namespace: System.Windows.Controls; assembly = System.Windows.Controls.Input.Toolkit'" erreur

L'erreur est:

the tag 'MenuItem' does not exist in XML namespace 'clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit'. 

Les références semblent pointer aux assemblées correctes. Est-ce que quelqu'un d'autre a déjà eu ce problème?

+0

Installez le Silverlight Toolkit sur le nouveau machine. – Gabe

+0

Cela se produit avec Silverlight 5 et la dernière version de Silverlight Toolkit. Les trois assemblys (SYstem.Windows.Controls, System.Windows.Controls.Input.Toolkit et System.Windows.Controls.Toolkit) sont référencés. MenuItem apparaît également dans Intellisense. – Jedidja

+0

Voir aussi ici http://forums.silverlight.net/forums/p/221036/560937.aspx – Jedidja

Répondre

0

Apparemment, il vous manque le Silverlight Toolkit sur cet ordinateur, mais il est installé sur les quatre autres.

+2

Il semble que le toolkit Silverlight soit installé. À travers les fichiers .DLL Silverlight, les références à MenuItem s'affichent. En outre, une autre partie de l'application utilise MenuItem, mais en le créant dans le code C#. Cette erreur de compilation se produit uniquement lorsque MenuItem est référencé dans XAML. – Ron

3

Une autre raison pour laquelle ce problème peut se produire est due à l'absence d'une référence à tous les "trois" assemblys requis pour utiliser les parties des contrôles Toolkit.

Assurez-vous de faire référence aux assemblys suivants si vous tentez d'utiliser les entrées du Toolkit (et en supposant que les thèmes sont également possibles).

System.Windows.Controls 
System.Windows.Controls.Toolkit 
System.Windows.Controls.Input.Toolkit 

Cela a résolu le problème que j'avais en ce qui concerne l'erreur.

+0

Vous avez besoin de: System.Windows.Controls à partir de la bibliothèque du client Silverlight SDK, System.Windows.Controls.Input.Toolkit à partir de Silverlight toolkit, et System.Windows.Controls.Toolkit à partir de la boîte à outils Silverlight. –

+0

Merci, cela a résolu le problème pour moi. Je ne référençais pas la DLL 'System.Windows.Controls'; quand j'ai ajouté cette référence, cela a corrigé l'erreur mystérieuse. – McGarnagle

1

Vous pouvez toujours se rabattre sur la création du menu contextuel dans le code.

public LedgerEntryControl() 
{ 
    InitializeComponent(); 

    ContextMenu contextMenu = new ContextMenu(); 
    MenuItem voidMenuItem = new MenuItem() { Header = "Void" }; 
    voidMenuItem.SetBinding(MenuItem.CommandProperty, new Binding("Void")); 
    contextMenu.Items.Add(voidMenuItem); 
    ContextMenuService.SetContextMenu(this, contextMenu); 
} 
0

Pour une raison quelconque, la boîte à outils de SilverLight de NuGet Package Manager est pour SL4, même lorsque le projet est mis à SL5. Vous pouvez download the SL5 version directement à partir de CodePlex. Notez que la date est Décembre 2011, au lieu de Février 2011 comme la version SL4.

Si pour une raison quelconque le MSI ne s'installe pas (ce qui m'est arrivé), vous pouvez extraire les fichiers contenus dans le MSI en utilisant 7-zip. Tout ce que je devais faire était manuellement ajouter une référence à System.Windows.Controls.Input.Toolkit.dll à partir des fichiers extraits, et mon projet SL5 compile maintenant avec succès son contrôle NumericUpDown. Heureusement, mon programme compile maintenant en mode Release et Debug.

Pour ajouter également, pour ceux qui ne l'ont pas déjà fait, vous devrez peut-être avoir une référence dans le XAML à la bonne boîte à outils. J'ai utilisé le suivant:

<sdk:Page xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" ... > 

Notez que la première partie, où est dit input, est ce qui doit être tapé dans le XAML d'utiliser la commande:

<input:NumericUpDown x:Name="myControl" ... /> 
Questions connexes