Silverlight 4: Alterar temas/estilos para todo o aplicativo sem usar o Toolkit
-
25-09-2019 - |
Pergunta
Estamos embarcando em nosso primeiro projeto Silverlight, vindo do WPF. É um portal da web relativamente simples e gostaríamos de evitar referências ao Silverlight Toolkit, dada a nossa experiência com o WPF Toolkit.
Não sou muito codificador e tenho algumas perguntas relacionadas aos temas:
Estilos implícitos facilitam isso. Parece claro que você pode trocar os dicionários de recursos para mudar seu tema. Como faço isso sem confiar no kit de ferramentas?
Como aplico os estilos a todo o aplicativo, como no WPF, em vez de envolver as coisas nos contêineres temáticos? Vejo que existe um ApplicationThemeuri que você pode usar, mas isso requer o kit de ferramentas.
Obrigado.
Solução
Apenas uma nota no kit de ferramentas do Siverlight. A última vez que usei o WPF Toolkit (que foi atrás), tive a impressão de que era mais ou menos opcional. Eu não diria que o mesmo se aplica ao Silverlight Toolkit. Ele adiciona muita funcionalidade importante que seria difícil de implementar por conta própria e, embora não seja livre de insetos, é bastante confiável. Não posso garantir todos os aspectos, mas estamos usando extensivamente em um grande projeto de Silverlight (~ 30k linhas de código), e achamos indispensável. A menos que você esteja ciente de problemas específicos que seu projeto encontraria, eu recomendaria que você repense sua decisão de não usá -lo.
Outras dicas
A aplicação de estilo em todo o aplicativo é uma tarefa simples no Silverlight 4. Coloque este código no app.xaml ou temas/genérico.xaml:
<!-- Sample style for each button in the application -->
<Style TargetType="Button">
</Style>
Este artigo pode ajudá -lo:http://www.silverlightshow.net/items/implicit-styles-in-silverlight-4.aspx
Você pode mudar o dicionário de recursos dessa maneira:
var dict = Application.Current.Resources.MergedDictionaries.FirstOrDefault(rd => rd.Source == new Uri("Dictionary1.xaml", UriKind.Relative));
if (dict != null)
dict.Source = new Uri("Dictionary2.xaml", UriKind.Relative);