У меня есть два ресурсных словаря. Один называется ResDictGlass.xaml, а другой ResDictNormal.xaml. Оба имеют одинаковые свойства и разные значения. Например
ResDictGlass.xaml имеет один стиль, подобный этому:
<Style x:Key="StyleTitleText" TargetType="TextBlock">
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="Green" />
</Style>
Тот же стиль в ResDictNormal.xaml:
<Style x:Key="StyleTitleText" TargetType="TextBlock">
<Setter Property="FontFamily" Value="Tahoma" />
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="WhiteSmoke" />
</Style>
Я установил текстовый блок в xaml как:
<TextBlock Style="{DynamicResource StyleTextblock}" Text="Prod.Code" VerticalAlignment="Top" />
Я хочу переключаться между этими стилями во время выполнения. Что я делаю так:
case "normal":
ResourceDictionary ResDict1 = new ResourceDictionary();
ResDict1.Source = new Uri("/ResDictNormal.xaml", UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(ResDict1);
break;
case "flip":
ResourceDictionary ResDict2 = new ResourceDictionary();
ResDict2.Source = new Uri("/ResDictGlass.xaml", UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(ResDict2);
break;
Это правильный подход? Должны ли мы удалить текущий словарь, а затем добавить словарь?