4
我有兩個資源字典。一個叫ResDictGlass.xaml,另一個叫ResDictNormal.xaml。兩者具有相同的屬性和不同的值。例如刪除資源字典並在WPF中添加另一個字典
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;
這是正確的做法嗎?我們是否必須刪除當前字典,然後添加字典?
嗨天使,謝謝你的回覆。我有兩個單選按鈕,一個用於正常,另一個用於翻轉。我想根據單選按鈕選擇交換這些樣式。所以我必須刪除一個並添加另一個? – sony
是的,你將不得不刪除舊的合併字典,並添加一個新的。還要記住使用'DynamicResource'標記引用而不是'StaticResource'。 –
如何通過C#代碼刪除?,謝謝 – sony