1

我有一个 wpfWindow正在使用ResourceDictionary其中已SolidColorBrush定义的 a 。

我可以SolidColorBrush通过使用像这样的十六进制值来选择使用它的 Color 属性设置什么颜色:

<SolidColorBrush Color="#FF0000"/>

当我尝试这样设置时:

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

它显然不起作用,因为 aResourceDictionary没有DataContext要设置的。

我尝试这样做是因为我认为 Binding 可能会使用在使用 的DataContext上设置的任何内容,但这似乎不起作用。ControlSolidColorBrush

所以我想知道如果我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>

然而,在 ViewModel 中声明一个UserSelectedBrush类型的属性Brush并直接绑定到该属性会更容易:

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