"Тег" 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
Это решило проблему, которую я имел в связи с ошибкой.
Ответ 2
http://marktinderholt.wordpress.com/2011/07/12/silverlight-toolkit-for-silverlight-5-beta
его перекомпилированный набор инструментов в SL5, просто укажите их, и вы установите
Ответ 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" ... />