0

次の行の色のリソース ディクショナリがあります。

<SolidColorBrush x:Key="MainProgramBlue" Color="{Binding MainProgramColor}"/>    

次に、このリソース ディクショナリを App.xaml ファイルにマージするなどして、MainProgramBlue を StaticResource として使用できるようにします。次の色のように実際に色を辞書に入れると、すべてが機能します

<SolidColorBrush x:Key="LightGrey" Color="#D5D5D5"/>

しかし、私はそのようなビューモデルに色をバインドしたい

public class ThemeViewModel : NotificationObject
{
    public ThemeViewModel()
    {
        MainProgramColor = (SolidColorBrush)(new BrushConverter().ConvertFrom( "#F79218" ));
    }

    private SolidColorBrush mMainProgramColor;
    /// <summary>
    ///
    /// </summary>
    public SolidColorBrush MainProgramColor
    {
        get
        {
            return mMainProgramColor;
        }
        set
        {
            mMainProgramColor = value;
            Notify( "MainProgramColor" );
        }
    }

}

しかし、ビューモデルは MainProgramBlue を私が望む色に設定していないようです。バインディングが機能していません。これをしても

<Grid Background="{Binding MainProgramColor}">

バインディングが機能し、グリッドの背景が ViewModel の色に設定されます。ビュー モデル バインディングが colors.xaml リソース ディクショナリで機能しないのはなぜですか? それを行うことさえ可能ですか?

全体で約5色を使用するプログラムがあり、現在はハードコーディングされていますが、それらをすべてプロパティにバインドして、独自の色とテーマを設定できるようにしたいので、バインドではなくリソースディクショナリにバインドしたいと思いますそれらはxamlのすべての場所...考えですか?

4

0 に答える 0