4
私は2つのリソースディクショナリを持っています。 1つはResDictGlass.xaml、もう1つはResDictNormal.xamlです。どちらも同じ特性と異なる値を持っています。リソースディクショナリを削除し、WPFに別のリソースを追加します。
:私のようにXAMLでテキストブロックを設定<Style x:Key="StyleTitleText" TargetType="TextBlock">
<Setter Property="FontFamily" Value="Tahoma" />
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="WhiteSmoke" />
</Style>
:ResDictNormal.xamlで同じスタイルがある
<Style x:Key="StyleTitleText" TargetType="TextBlock">
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="Green" />
</Style>
:たとえば
ResDictGlass.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;
これは正しいアプローチですか?現在の辞書を削除して辞書を追加する必要がありますか?
こんにちは天使、返信いただきありがとうございます。私は2つのラジオボタンを持っています.1つは普通のもの、もう1つはフリップです。私はこれらのスタイルをラジオボタンの選択に従って交換したいと思います。だから私は1つを削除し、もう一方を追加する必要がありますか? – sony
はい、古いマージされた辞書を削除し、新しい辞書を追加する必要があります。また、 'StaticResource'ではなく、' DynamicResource'マークアップ参照を使用してください。私はC#のコードを通じてこれを削除するにはどうすればよい –
?おかげ – sony