давайте предположим, что у нас есть контроль, который имеет свой собственный набор стилей в разделе Ресурсы:Как изменить стиль элемента управления во время своей жизни
<Page.Resources>
<Style TargetType="Button" x:Key="ButtonStyle">
<Setter Property="Background" Value="Red"/>
<Setter Property="FontSize" Value="20"/>
</Style>
</Page.Resources>
<Grid>
<Button Content="Test label" Style="{StaticResource ButtonStyle}"/>
</Grid>
Проблема: Для примера - я хочу, чтобы пользователю decice которого цвета фона должны на фоне кнопки - во время, когда элемент управления уже отображается над макетом.
Редактирование стиля внутри xaml не будет работать, тогда он должен быть повторно применен для управления - это StaticResource, поэтому он никогда этого не сделает. Есть ли способ заставить элемент управления повторно применить стиль?
Установка стиля в коде не будет работать, если только не существует способа только получить существующий стиль и изменить только одно свойство, оставив неповрежденным цели вручную, копируя/устанавливая их вручную. Не думайте, что повторное применение стиля таким образом, если у меня есть более одного элемента управления, хорошая идея.
Идеальный способ: 1) получить стиль из ResourceDictionary 2) изменить одно свойство в этом стиле 3) вызвать метод Control.RefreshStyle(), который заставит элемент управления искать стиль и применить его снова.
Любые идеи, как это сделать чистым способом? Стили хранятся в ResourceDictionaries, и они должны оставаться такими. Как я могу изменить/изменить их, а затем заставить элементы управления применить новый стиль?
Обратите внимание, что создание var style = new Style(); затем вручную добавление style.AddValue (...); и настройка control.Style = style; это не решение для меня. У меня слишком много стилей и слишком много элементов управления.
редактировать: Обратите внимание 2: Я использую UWP, а не WPF, поэтому все решения, основанные на DynamicResource не будет работать для меня
http://svetoslavsavov.blogspot.hu/2009/07/switching-wpf-interface-themes-at.html – Blackstar
Я не DynamicResource в UWP – RTDev