ではなく、実行時に変更することができ、キーへのすべての参照にStaticResource拡張のDynamicResource拡張子を使用してください。
次に、次のようなコードを使用して値を変更できます。これはにオブジェクトごとに行うことができます
Application.Current.Resources["Default Color"] = System.Windows.Media.Colors.Red;
...
public MyWindow()
{
InitializeComponent();
this.Resources["Default Color"] = System.Windows.Media.Colors.Red;
PART_DynamicButton.Resources["Default Color"] = System.Windows.Media.Colors.Red;
}
これはあなたの全体のマージされたリソースディクショナリをクリアし、あなただけのいくつかの値を変更する必要がある場合は、新しいものを追加するよりも高いパフォーマンスです。
DynamicResource拡張機能はDependencyPropertiesでのみ機能し、Xamlでインスタンス化されたFreezableオブジェクトは通常、固定されているため、DependencyPropertiesの変更ができません。ブラシがxamlにインストールされている場合は、SolidColorBrushの色を変更しないでください。ここで
は、回避策
<! -- Xaml -->
<SolidColorBrush x:Key="App_Page_Background" Color="White"/>
<Page Background="{DynamicResource App_Page_Background}"/>
// C# code
Application.Current.Resources["App_Page_Background"] = new SolidColorBrush(Colors.Red);
なぜあなたはそれをやりたいんですか?実行時にスタイルでファイルを変更するよりも、確かに良い解決策があります。 –
私のアプリケーションにはさまざまなテーマがあります。それでは、FileNameを変更する方法。私は様々な他のXAMLファイルでBrushes.xamlを使用しています。 –