1

が定義されているWindowを使用しているwpfがあります。ResourceDictionarySolidColorBrush

SolidColorBrush次のように16進値を使用して、Colorプロパティで設定する色を選択できます。

<SolidColorBrush Color="#FF0000"/>

このように設定しようとすると:

<SolidColorBrush Color="{Binding UserSelectedColor}"/>

には設定するものがないため、明らかにResourceDictionary機能しませんDataContext

DataContextバインディングは、を使用しているに設定されてControlいるものを使用する可能性があると思ったので、これを実行しようとしましたSolidColorBrushが、それは機能していないようです。

だから私は私がのを設定できない場合、私はどのようにColorから取得することになっているのだろうかと思っていますViewModelDataContextResourceDictionary

4

1 に答える 1

4

考えられる解決策は、ViewModelオブジェクトをResourceDictionaryに配置しSource、バインディングのを明示的に設定することです。

<Window ...>
    <Window.Resources>
        <local:ViewModel x:Key="ViewModel"/>
        <SolidColorBrush x:Key="UserSelectedBrush"
            Color="{Binding UserSelectedColor, Source={StaticResource ViewModel}}"/>
    </Window.Resources>
    <Grid DataContext="{StaticResource ViewModel}">
        <Rectangle Fill="{StaticResource UserSelectedBrush}"/>
    </Grid>
</Window>

UserSelectedBrushただし、ViewModelでタイプのプロパティを宣言し、Brushそのプロパティに直接バインドする方が簡単です。

<Rectangle Fill="{Binding UserSelectedBrush}"/>
于 2013-03-07T18:43:17.780 に答える