Creazione di un’istanza di una class nidificata in XAML

in un file XAML (un UserControl WPF), esiste un modo per fare riferimento a una class interna “B” definita in un’altra class “A”?

public class A { public class B { } } 

Qualcosa di simile a :

  

Questa syntax non funziona perché “B” è interpretato come una proprietà denominata “B” nella class “A”.

Ho provato syntax più esotiche come “::” o “+” ma nessuno sembra funzionare.

Attualmente sto usando Silverlight 4 con VS2010 .

Grazie in anticipo per il vostro aiuto.

Stavo cercando e cercando, perché se questo è ansible, mi piacerebbe sapere. Sfortunatamente, l’ho trovato su msdn :

La tua class personalizzata non deve essere una class nidificata. Le classi nidificate e il “punto” nella loro syntax di utilizzo CLR generica interferiscono con altre funzioni WPF e / o XAML come le proprietà associate.

Quindi, sembra che tu non possa fare riferimento a una class annidata con l’operatore punto. Per quanto riguarda i modi alternativi di raggiungere quella class interiore attraverso XAML, non ho ancora avuto fortuna nelle mie ricerche. : o (Ma questo è un problema piuttosto interessante, quindi continuerò a cercare. Forse troverò un po ‘di fortuna!: o)

Questa domanda è piuttosto vecchia e non so se avrebbe funzionato con la versione di WPF nel 2010, ma ora puoi farlo funzionare usando il nome “reale” (interno) del tipo annidato:

  

Se hai mai visto un codice smontato, ecco come appaiono i tipi annidati:

 ParentTypeName+Nested 

. si riferisce a una proprietà ; non sono sicuro del motivo per cui XAML non possa anche cercare una class nidificata, ma non lo fa.


Una class nidificata può essere rappresentata all’interno di una stringa (ad es. Un valore di una proprietà), utilizzando A+B invece di AB :

  

Come nome di un elemento (come mostrato nella domanda), + non è permesso, in quanto il risultato non sarebbe più valido XML; + non è un carattere di nome valido:
XAML è XML .
Spec. XML – NameChar .

Quindi il nome dell’elemento non può descrivere direttamente una class nidificata.
MA vedi AGGIORNA sotto – una syntax alternativa che risolve questo.


AGGIORNARE
Per il commento di @ Artfunkel su una risposta, questa dovrebbe essere una soluzione [non ho testato]:

  

Da: https://docs.microsoft.com/en-us/dotnet/framework/xaml-services/x-type-markup-extension

TBD come specificare le proprietà con quella syntax. Usa x:TypeArguments ?