アプリケーションの配色を動的にしようとしています。これにより、アプリケーションの配色を決定するプロパティ(できればデータベースから取得)に色の値を設定できます。
Resources.xamlファイルがあり、アプリケーションの色とスタイルを設定して、すべてのコントロールとウィンドウで使用しています。リソースファイルのSolidColorBrushの色をViewModelのプロパティにバインドして、この色が現在のアプリケーション値に基づいて変更できるようにしたいと思います。これが私がこれまでに持っているものですが、それは機能していないので、何かが足りないに違いありません。
Resources.xamlファイルのコード:
<SolidColorBrush x:Key="ApplicationMainBackgroundBrush" Color="{Binding Path=MainApplicationColor, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ApplicationArchitecture:ViewModelBase}, Mode=FindAncestor}, FallbackValue=CornflowerBlue}"/>
MainWindow.xamlファイルのコード:
<Grid Grid.Row="0" x:Name="gridControl" Background="{DynamicResource ApplicationMainBackgroundBrush}">
私のMainWindow.xamlのDataContextは、ApplicationViewModelと呼ばれるクラスであり、ViewModelBaseから継承します。このクラスは、文字列「Teal」を返すプロパティ「MainApplicationColor」を持ち、そのSolidColorBrushの色をFallbackValueから変更します。今のところ色をハードコーディングしていますが、これは将来データベースから自分の価値を取得したい場所です。現在、色は変化していないので、バインディングソースに何か問題があると思います。これは、明らかに期待どおりに機能していないためです。
ありがとう、
クララ