我目前使用實現菜單和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