Referência Tipo aninhado na marcação ObjectDataProvider
-
18-09-2019 - |
Pergunta
Estou tentando usar um tipo aninhado no meu objectDataSource a la isto artigo. Não parece estar funcionando para mim.
<ObjectDataProvider x:Key="myProvider" ObjectType="{x:Type local:OutsideClass+InsideClass}" MethodName="GetObjects" />
Solução
Esta é uma questão conhecida no VS 2008 e além. A posição oficial da Microsoft é que você não deveria estar fazendo isso:
Enquanto o XAML que você está escrevendo é claramente legal, trabalha em tempo de execução e carrega corretamente na mistura de expressão, atualmente não acreditamos que o uso e o acesso a classes aninhadas das extensões de marcação seja muito comum na construção de aplicativos.
Outras dicas
Uma maneira de contornar x:Type
referências a tipos aninhados é definir uma nova extensão de marcação e usá -la em vez do x:Type
Extensão de marcação. Eu publiquei informações sobre um desses, incluindo a fonte para o Type2Extension
classe, IN esta resposta.
o Type2Extension
não produzirá erros de designer como o TypeExtension
faz. Talvez isso não ocorra no VS 2010.
A única ressalva é que o original TypeExtension
você usa com {x:Type
Digite o nome}
é um pouco mais robusto do que Type2Extension
(por exemplo, verificando se os argumentos são nulos e jogando exceções).