“标签'MenuItem'在XML命名空间'clr-namespace中不存在:System.Windows.Controls; assembly = System.Windows.Controls.Input.Toolkit'”错误

时间:2010-12-22 22:41:23

标签: xaml silverlight-4.0 silverlight-toolkit silverlight-5.0

尝试在新计算机上构建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'. 

引用似乎是指向正确程序集的指针。还有其他人遇到过这个问题吗?

5 个答案:

答案 0 :(得分:3)

可能发生此问题的另一个原因是缺少对使用Toolkit控件部分所需的所有“三个”程序集的引用。

如果尝试使用Toolkit输入(并且也可能假设主题),请确保您引用了以下程序集。

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

这解决了我遇到的与错误有关的问题。

答案 1 :(得分:2)

http://marktinderholt.wordpress.com/2011/07/12/silverlight-toolkit-for-silverlight-5-beta

它在SL5中重新编译的工具包,只需参考那些并且你已经设置了

答案 2 :(得分:1)

您可以随时使用代码创建上下文菜单。

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

答案 3 :(得分:0)

看起来你错过了那台机器上的Silverlight Toolkit,但它安装在其他四台机器上。

答案 4 :(得分:0)

出于某种原因,NuGet Package Manager的SilverLight Toolkit适用于SL4,即使项目设置为SL5也是如此。您可以直接从CodePlex download the SL5 version。请注意,日期为 December 2011,而非二月 2011,如SL4版本。

如果由于某种原因MSI没有安装(发生在我身上),您可以使用7-zip提取MSI中包含的文件。我所要做的就是从提取的文件中手动添加对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" ... />