質問

アプリケーションの配色を決定するプロパティ(できればデータベースから来る)にカラー値を作成できるように、アプリケーションの配色を動的にしようとしています。

Resources.xamlファイルがあり、アプリケーションに色とスタイルを設定し、すべてのコントロールとWindows全体で使用します。リソースファイルの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}">

My MainWindow.xamlのデータコンテキストは、applicationViewModelと呼ばれるクラスであり、ViewModelbaseから継承されます。ビューモデルベースは、「MainApplicationColor」を「Teal」に戻すプロパティ「MainApplicationColor」を持ち、そのSolidColorbrushの色をFallBackValueから変更します。私は今のところハードコーディングをしていますが、これは将来データベースから自分の価値を取得したい場所です。色は現在変化していないので、私の拘束力のあるソースに何か問題があると思います。明らかに、そうすべきだと思うように機能していないからです。

ありがとう、

クララ

役に立ちましたか?

解決

問題はあなたのようです SolidColorBrush.Color プロパティの Binding.

  1. そこには祖先のタイプがあるはずです ApplicationArchitecture:MainWindowいいえ ApplicationArchitecture:ViewModelBase.

  2. パスにはを含める必要があります DataContext 初期化。

このような....

  <SolidColorBrush x:Key="ApplicationMainBackgroundBrush"
                   Color="{Binding Path=DataContext.MainApplicationColor,
                              RelativeSource={RelativeSource FindAncestor, 
                                  AncestorType={x:Type ApplicationArchitecture:MainWindow},
                                      Mode=FindAncestor},
                                          FallbackValue=CornflowerBlue}"/>

これが役立つかどうか教えてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top