2012-11-13 7 views
10

Ich kann nicht scheinen, einen öffentlichen verschachtelten Aufzählungstyp von XAML zu verweisen. Ich habe eine KlasseReferenz verschachtelte Aufzählungstyp von XAML

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

Und ich versuche MyEnum in XAML wie diese Referenz:

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

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

aber VS klagt sie nicht öffentlich Typ MyEnum finden. Ich habe auch versucht die + Syntax auf eine der Antworten auf this post Basis mit ...

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

aber das funktioniert auch nicht.

Beachten Sie, dass x:Static tut Arbeit mit der + Syntax:

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

Und wenn ich MyEnum aus MyClass bewegen kann ich es auch verweisen. Aber nicht, wenn es verschachtelt ist ...

Also was vermisse ich? Wie referenziere ich eine verschachtelte Aufzählung von XAML mit x:Type? (Und beachte, ich versuche nichts zu instanziieren, referenziere nur den Typ).

UPDATE

Es sieht aus wie das nur ein Fehler mit dem Designer VS 2010 ist. Der Designer beklagt, dass Type MyNamespace:MyClass+MyEnum was not found. Die Anwendung scheint jedoch ordnungsgemäß ausgeführt zu werden und auf den verschachtelten Typ zuzugreifen. Ich habe das auch mit einer geschachtelten Klasse versucht, und das funktioniert zur Laufzeit.

Mögliche offen Fehler: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/12f3e120-e217-4eee-ab49-490b70031806/

Verwandte thread: Design time error while writing Nested type in xaml

+1

Sieht aus wie könnte dies ein bekannter Fehler in VS2010 Designern sein? http://social.msdn.microsoft.com/forums/en-US/wpf/thread/12f3e120-e217-4eee-ab49-490b70031806/ – hashlock

+0

Im Jahr 2012 funktioniert es, obwohl Designer Fehler zeigt, bis Sie Ihr Projekt – Kranach

Antwort

4

MSDN sagt:

Ihre benutzerdefinierte Klasse darf keine geschachtelte Klasse sein. Verschachtelte Klassen und der "Punkt" in ihrer allgemeinen CLR-Verwendungssyntax stören andere WPF - und/oder XAML-Funktionen wie angefügte Eigenschaften.

ähnliche Frage ist hier: Creating an instance of a nested class in XAML

+0

bauen Aber das Die Einschränkung scheint nur für das Instanziieren von benutzerdefinierten Klassen zu gelten. Ich versuche nur, auf den Typ zu verweisen. Und warum funktioniert '+' Syntax mit 'x: Static'? Scheint inkonsistent. – hashlock

Verwandte Themen