2012-11-13 27 views
10

我似乎無法從XAML引用公共嵌套枚舉類型。我有一個類來自XAML的引用嵌套枚舉類型

namespace MyNamespace 
{ 
    public class MyClass 
    { 
    public enum MyEnum 
    { 
     A, 
     B, 
    } 
    } 
} 

我嘗試引用MyEnum在XAML這樣的:

xmlns:MyNamespace="clr-namespace:MyNamespace;assembly=MyApp" 
.... 

{x:Type MyNamespace:MyClass:MyEnum} // DOESN'T WORK 

但VS抱怨無法找到公共型MyEnum。我也嘗試使用基於答案之一this post+語法...

{x:Type MyNamespace:MyClass+MyEnum} // DOESN'T WORK 

但這並不工作。

注意x:Static確實與+語法工作:

{x:Static MyNamespace:MyClass+MyEnum.A} // WORKS 

如果我移動MyEnumMyClass我可以引用它。但不是如果它嵌套...

那麼我錯過了什麼?如何使用x:Type從XAML引用嵌套枚舉? (注意,我沒有試圖實例化任何東西,只是參考類型)。

UPDATE

看起來這僅僅是一個用VS 2010設計錯誤。設計師抱怨說Type MyNamespace:MyClass+MyEnum was not found。但應用程序似乎運行並正確訪問嵌套類型。我也試過這個嵌套類,它在運行時工作。

可能打開錯誤:http://social.msdn.microsoft.com/forums/en-US/wpf/thread/12f3e120-e217-4eee-ab49-490b70031806/

相關主題:Design time error while writing Nested type in xaml

+1

看起來這可能是VS2010設計一個已知的bug? http://social.msdn.microsoft.com/forums/en-US/wpf/thread/12f3e120-e217-4eee-ab49-490b70031806/ – hashlock

+0

2012年,它的工作原理,儘管設計師直到你建立你的項目時才顯示錯誤 – Kranach

回答

4

MSDN說:

您的自定義類不能是嵌套類。嵌套類和其一般CLR使用語法中的「點」會干擾其他WPF 和/或XAML功能,例如附加屬性。

類似的問題在這裏:Creating an instance of a nested class in XAML

+0

但是,限制似乎只適用於實例化自定義類。我只是想引用類型。爲什麼''''語法與'x:Static'一起工作?似乎不一致。 – hashlock