0

Prism 6 を使用してアプリケーションを構築していますが、MVVM、データ バインディング、およびこれらすべての設計パターンは初めてです。アプリケーションでは、ビュー モデルの一部のプロパティの値に応じて異なる色を表示する必要があります。

そのために、次のようにリソース ディクショナリにいくつかの SolidColorBrush を用意しています。<SolidColorBrush x:Key="{x:Static status:Status.notViewed}">#FFe74856</SolidColorBrush>

次に、私のビューでは、次を使用prism:ViewModelLocator.AutoWireViewModel="True"して、対応するビューモデルに接続します。また、次のようにキャンバス上でバインディングを使用します (ただし、それはグリッドまたはその他のものである可能性がありますが、あまり気にしません) <Canvas Background="{Binding B}" Margin="5" />。補足として、日付を表示する文字列にバインドされたテキストブロックなど、他のプロパティにバインドされた他の要素があり、それは正常に機能します。

ここで、ビュー モデルBで、バインディングに対応するプロパティを作成しますpublic SolidColorBrush B = (SolidColorBrush)Application.Current.Resources[Status.notViewed];

Bアプリケーションを実行すると、キャンバスは白いままです...ただし、ビューモデルのコンストラクターでコンテンツを出力するため、ブラシが含まれていると確信しています( Console.WriteLine("Color: {0}", B.ToString());0 と正しい値を取得します。

私は何を間違っていますか?

ありがとう

4

2 に答える 2

0

表現

public SolidColorBrush B
    = (SolidColorBrush)Application.Current.Resources[Status.notViewed];

プロパティではなく、パブリック フィールドを宣言します。プロパティは次のようになります。

public SolidColorBrush B { get; set; }
    = (SolidColorBrush)Application.Current.Resources[Status.notViewed];

WPF のデータ バインディングは、パブリック プロパティでのみ機能します。

于 2016-04-28T19:11:33.970 に答える