我目前使用实现菜单和ContextMenus为Silverlight 3中图书馆和。该库在System.Windows.Controls命名空间中定义了MenuItem类。外部别名XAML
SL3没有问题,因为Silverlight类库中的其他位置没有MenuItem类;但现在我需要在Silverlight 4工具包程序集中使用另一个控件,并且该工具包现在在此相同程序集中定义了一个System.Windows.Controls.MenuItem!
所以我需要一种方法向编译器表明我想从我的旧程序集中使用System.Windows.Controls.MenuItem,而不是在工具包4程序集中使用System.Windows.Controls.MenuItem。
该解决方案似乎是“外部别名”的功能。
我可以调整我自己用外部别名编写的文件,但是如何向代码生成器指示从XAML生成“.g.i.cs”文件的组件,更确切地说使用哪个别名?
默认情况下,它总是产生在“.g.i.cs”文件System.Windows.Controls.MenuItem变量,当然不别名C#编译器是无法知道使用哪个组件。
我正在使用VS 2010 Professional,但我一直未能找到改变此行为的选项。
在此先感谢。
+1有趣的问题。 – AnthonyWJones 2010-09-28 19:08:15
这就是为什么我考虑向系统添加任何内容。*命名空间是一种不好的做法。 – Yogesh 2010-09-28 19:26:06
@Yogesh是和否:当您为缺少的部分提供实现时,比如Silverlight由于其相对较差的库而常常是这种情况,所以尝试使它看起来像它的WPF对应部分,即参考实现。这样,当组件最终被添加到Silverlight时,您不必更改您的代码。如果工具包提供了所有的菜单实现,而不仅仅是ContextMenus,应该是这种情况。 – Pragmateek 2010-09-28 22:13:03