Silverlight 4: Измените темы / стили для всего приложения без использования набора инструментов
-
25-09-2019 - |
Вопрос
Мы начинаем на нашем первом проекте Silverlight, исходя из WPF. Это относительно простой веб-портал, и мы хотели бы избежать ссылок на Silverlight Toolkit, учитывая наш опыт с помощью Toolkit WPF.
Я не большую часть кодера и имею пару вопросов, связанных с темами:
Неявные стили делают это проще. Похоже, что вы можете просто выбросить словари ресурсов для изменения вашей темы. Как мне это сделать, не полагаясь на инструментарий?
Как я могу применить стили во всем приложении, например, в WPF, вместо того, чтобы упаковывать вещи в тематических контейнерах? Я вижу, что есть applicateTheReuri, который вы можете использовать, но это требует инструментария.
Спасибо.
Решение
Просто записка на Siverlight Toolkit. В последний раз я использовал The WPF Toolkit (что было некоторое время назад), я получил впечатление, что это было более или менее необязательно. Я бы не сказал, что то же самое верно для инструментария Silverlight. Он добавляет большое значение важной функциональности, которая будет трудно реализовать самостоятельно, и пока он не без ошибок, это довольно надежно. Я не могу поручиться за каждый аспект этого, но мы используем его широко в большом проекте Silverlight (~ 30k строки кода), и мы находим его незаменимым. Если вы не знаете о конкретных проблемах, которые столкнутся с вашим проектом, я бы порекомендовал вам переосмыслить ваше решение не использовать его.
Другие советы
Применение стиля в целом приложение - это простая задача в Silverlight 4. Поместите этот код в App.xaml или Themes / Generic.xaml:
<!-- Sample style for each button in the application -->
<Style TargetType="Button">
</Style>
Эта статья может помочь вам:http://www.silverlightshow.net/items/implicit-styles-in-silverlight-4.aspx.
Вы можете изменить словарь ресурсов на этот путь:
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);