Wie referenziere ich einen generischen Typ im DataType-Attribut einer HierarchicalDataTemplate?

7

Ich habe eine Klasse von MyClass<MyObject> und möchte sie als DataType für eine HierarchicalDataTemplate setzen.

Was ist die Syntax dafür in XAML? (Ich weiß, wie man Namespaces setzt, ich brauche nur die Syntax für

%Vor%     
Dabblernl 10.11.2009, 07:12
quelle

3 Antworten

16

itowlson Ansatz ist ein guter, aber es ist nur ein Anfang. Hier ist etwas, das für Ihren Fall (und die meisten, wenn nicht alle Fälle) funktioniert:

%Vor%

Dann können Sie in Ihrem XAML einen beliebigen Typ mit beliebiger Tiefe erstellen. Zum Beispiel:

%Vor%

Hier gibt es ein paar wichtige Ideen:

  • Ein generischer Typ muss unter Verwendung der Standardnotation angegeben werden. So ist System.Collections.Generic.List <& strong> System.Collections.Generic.List1 . Das Zeichen 'gibt an, dass der Typ generisch ist, und die Nummer dahinter gibt die Anzahl generischer Parameter an, die der Typ hat.
  • Die x: Type-Markup-Erweiterung kann diese grundlegenden generischen Typen ganz einfach abrufen.
  • Die generischen Parametertypen werden als Array von Type-Objekten übergeben. Dieses Array wird dann an den Aufruf MakeGenericType (...) übergeben.
Szymon Rozga 10.11.2009 15:20
quelle
4

Dies wird von Anfang an nicht in WPF 3.x unterstützt (ich denke, es könnte in 4.0 sein, aber ich bin mir nicht sicher); aber es ist einfach, mit einer Markup-Erweiterung einzurichten.

Zuerst müssen Sie eine Markup-Erweiterungsklasse erstellen, die den Typparameter als Konstruktorargument verwendet:

%Vor%

Nun verwenden Sie diese Markup-Erweiterung anstelle der Erweiterung x: Type:

%Vor%

Es ist unnötig zu sagen, dass dies verallgemeinert werden kann, um beliebige generische Typen instanziieren zu können; Ich habe das nicht gezeigt, weil es ein bisschen mehr Komplexität hinzufügt.

    
itowlson 10.11.2009 07:24
quelle
1

Verwenden Sie in .NET 4.0 den folgenden Code.

%Vor%

Ссылка

    
illef 23.03.2011 09:53
quelle