2010-12-22 18 views
10

Aparece un error al intentar generar un Aplicación Silverlight en una nueva máquina. (Silverlight 4, Visual Studio 2010) Esta aplicación se compila sin errores en otras cuatro máquinas."La etiqueta 'MenuItem' no existe en el espacio de nombres XML 'clr-namespace: System.Windows.Controls; assembly = System.Windows.Controls.Input.Toolkit'" error

El error es:

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

Las referencias parecen ser puntero a los conjuntos correctos. ¿Alguien más ha tenido este problema?

+0

Instalar el juego de herramientas en la nueva máquina. – Gabe

+0

Esto está sucediendo con Silverlight 5 y el último Silverlight Toolkit. Se hace referencia a los tres ensamblados (SYStem.Windows.Controls, System.Windows.Controls.Input.Toolkit y System.Windows.Controls.Toolkit). MenuItem también aparece en Intellisense. – Jedidja

+0

Vea también aquí http://forums.silverlight.net/forums/p/221036/560937.aspx – Jedidja

Respuesta

0

Parece que le falta el Silverlight Toolkit en esa máquina, pero está instalado en las otras cuatro.

+2

Parece que está instalado el kit de herramientas de Silverlight. Al ejecutar Silverlight .DLLs, aparecen las referencias a MenuItem. Además, otra parte de la aplicación utiliza MenuItem, pero lo crea en código C#. Este error de compilación solo ocurre cuando se hace referencia a MenuItem en XAML. – Ron

3

Otra razón por la que este problema puede ocurrir es por la falta de una referencia a los "tres" conjuntos necesarios para usar las partes de los controles del Toolkit.

Asegúrese de tener referencia a los siguientes conjuntos si intenta utilizar las entradas del kit de herramientas (y suponiendo que también los temas).

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

Esto resolvió el problema que tenía en relación con el error.

+0

Necesita: System.Windows.Controls de la biblioteca de cliente de Silverlight SDK, System.Windows.Controls.Input.Toolkit forma el kit de herramientas de Silverlight, y System.Windows.Controls.Toolkit del kit de herramientas de Silverlight. –

+0

Gracias, esto me solucionó el problema. No estaba haciendo referencia a la DLL 'System.Windows.Controls'; cuando agregué esa referencia, se corrigió el error misterioso. – McGarnagle

1

Siempre se puede recurrir a la creación del menú de contexto en el código.

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

Por alguna razón, el kit de herramientas de Silverlight desde el Administrador de NuGet paquete es para SL4, aun cuando el proyecto se establece en SL5. Puede download the SL5 version directamente desde CodePlex. Tenga en cuenta que la fecha es Diciembre 2011, en lugar de Febrero 2011 como la versión SL4.

Si por algún motivo el MSI no se instala (lo que me sucedió a mí), puede extraer los archivos contenidos en el MSI usando 7-zip. Todo lo que tuve que hacer fue agregar manualmente una referencia al System.Windows.Controls.Input.Toolkit.dll de los archivos extraídos, y mi proyecto SL5 ahora se compila exitosamente con su control NumericUpDown. Afortunadamente, mi programa ahora compila tanto en modo Release como en Debug.

También para agregar, para aquellos que aún no lo han hecho, es posible que necesites tener una referencia en el XAML para el conjunto de herramientas correcto. He utilizado el siguiente:

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

Tenga en cuenta que la primera parte, donde se dice input, es lo que hay que ser escrito en el XAML para utilizar el control:

<input:NumericUpDown x:Name="myControl" ... /> 
Cuestiones relacionadas