尝试在新计算机上构建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'.
引用似乎是指向正确程序集的指针。还有其他人遇到过这个问题吗?
答案 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" ... />