"Тег" MenuItem "не существует в пространстве имен XML-пространства" clr-namespace: System.Windows.Controls; assembly = System.Windows.Controls.Input.Toolkit "

Я получаю сообщение об ошибке, которое пытается создать приложение Silverlight на новом компьютере. (Silverlight 4, Visual Studio 2010) Это приложение компилируется без ошибок на четырех других машинах.

Ошибка:

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

Ссылки выглядят как указатель на правильные сборки. У кого-нибудь еще была эта проблема?

Ответ 1

Другая причина, по которой может возникнуть эта проблема, связана с отсутствием ссылки на все "три" сборки, необходимые для использования частей элементов управления Toolkit.

Удостоверьтесь, что у вас есть ссылка на следующие сборки, если вы пытаетесь использовать входы Toolkit (и предполагая, что темы также возможно).

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

Это решило проблему, которую я имел в связи с ошибкой.

Ответ 3

Вы всегда можете отказаться от создания контекстного меню в коде.

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

Ответ 4

похоже, что на этом компьютере отсутствует Silverlight Toolkit, но он установлен на четырех других.

Ответ 5

По какой-то причине SilverLight Toolkit из NuGet Package Manager предназначен для SL4, даже если для проекта установлено значение SL5. Вы можете загрузить версию SL5 непосредственно из CodePlex. Обратите внимание, что дата - декабрь 2011 года, а не февраль 2011 года, как версия SL4.

Если по какой-то причине MSI не устанавливает (что случилось со мной), вы можете извлечь файлы, содержащиеся в MSI, используя 7-zip. Все, что мне нужно было сделать, это вручную добавить ссылку на System.Windows.Controls.Input.Toolkit.dll из извлеченных файлов, и мой проект SL5 теперь успешно компилируется с помощью элемента управления NumericUpDown. К счастью, моя программа теперь компилируется как в режиме Release, так и Debug.

Кроме того, для тех, кто еще этого не сделал, вам может потребоваться ссылка в XAML на правильный набор инструментов. Я использовал следующее:

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

Обратите внимание, что первая часть, где указано input, - это то, что нужно ввести в XAML для использования элемента управления:

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