Lendo um XAML dinamicamente com Silverlight

No forum da MSDN.com ocorreram várias perguntas de como seria possível ler um XAML dinamicamente.

Falando a grosso modo, dentro da página, o Silverlight é hosteado por elementos HTML e assim como já é de costume, você pode utilizar o JavaScript para interagir com qualquer outro elemento, inclusive com o XAML.

Quando trabalhamos com XAML no contexto web, é importante lembrar que ambos DOM e objeto Silverlight (WPF/E). Obs.: boas dicas do RPS (Roberto Presentation Sonnino) 🙂

Com isso, podemos ver que para ler o XAML dinamicamente ficou bem mais fácil de entender. Vamos lá:

1) No JavaScript referencie o controle Silverlight via DOM (Document Object Model)
var wpfeControl = document.getElementById("wpfeControlID");

2) Use a propriedade "Source" do controle Silverlight para especificar o arquivo XAML.
wpfeControl.Source = "pathToXamlFile.xaml"

3) Caso você tenha problemas de renderização (depende da situação) você pode recarregar o conteúdo do Silverlight utilizando o método reload().
wpfeControl.Reload();

Faça o download do source da minha demo.
Veja o resultado da integração.

Bem, com isso dá pra fazer uma série de coisas. Como um slidershow que, por exemplo, que faz a transição de animações carregadas dinamicamente.

E sobre o Silverlight com XAML animado?!  Ai é outra história. O XAML no WPF/E tem um comportamente diferente para as animações. Fica para outro post.

É isso.
Abraço.

Rodrigo Kono
MCP.NET 2.0 – MCTS – MSP
DevGoiás.NET – www.devgoias.net