Tipo nidificato di riferimento in ObjectDataProvider Markup
-
18-09-2019 - |
Domanda
Sto cercando di usare un tipo nidificato nella mia ObjectDataSource a la questo articolo. Non sembra funzionare per me.
<ObjectDataProvider x:Key="myProvider" ObjectType="{x:Type local:OutsideClass+InsideClass}" MethodName="GetObjects" />
Soluzione
Questo è un problema noto nel VS 2008 e oltre. La posizione ufficiale di Microsoft è che non dovresti farlo:
Mentre la XAML che stai scrivendo è chiaramente legale, funziona in fase di esecuzione e si carica correttamente nella miscela di espressione, al momento non crediamo che l'uso e l'accesso alle classi nidificate dalle estensioni di markup siano molto comuni nella costruzione di applicazioni.
Altri suggerimenti
Un modo per aggirare x:Type
I riferimenti ai tipi nidificati devono definire una nuova estensione di markup e usarla invece di x:Type
Estensione di markup. Ho pubblicato informazioni su uno di questi, inclusa la fonte per il Type2Extension
classe, in questa risposta.
Il Type2Extension
non produrrà errori di progettista come il TypeExtension
fa. Forse questo non si verificherà in VS 2010.
L'unico avvertimento è che l'originale TypeExtension
usi con {x:Type
dattilicologia}
è un po 'più robusto di Type2Extension
(Ad esempio, controllando se gli argomenti sono nulli e lanciano eccezioni).