1

我正在做 :

<ListView Margin="34,42,42,25" Name="listView1">
  <ListView.View>
    <GridView>
      <GridViewColumn Width="550" Header="Value" DisplayMemberBinding="{Binding Path=MyValue}"/>
    </GridView>
  </ListView.View>
  <ListView.Resources>
    <Style TargetType="{x:Type TextBlock}">
      <Setter Property="Foreground" Value="Green"/>
    </Style>
  </ListView.Resources>
</ListView>

这是有效的,我可以看到我的绿色物品。

现在,我想对此使用绑定值,所以我有一个属性:

private Color _theColor;

public System.Windows.Media.Color TheColor
{
    get { return _theColor; }
    set
    {
        if (_theColor != value)
        {
            _theColor = value;
            OnPropertyChanged("TheColor");
        }
    }
}

但如果我使用这个绑定:

<Setter Property="Foreground" Value="{Binding Path=TheColor}"/>

它不工作...

我该如何纠正?

当然,我将 TheColor 设置为Colors.Green...

谢谢你的帮助

4

1 回答 1

1

很简单,你不能绑定到Color. Foreground需要设置Brush为. 所以我会将值设置为 aSolidColorBrush并将Brush' 颜色 属性绑定到您的TheColor DependencyProperty

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground">
        <Setter.Value>
            <SolidColorBrush Color="{Binding Path=TheColor}" />
        </Setter.Value>
    </Setter>
</Style>

在我的示例中,我只是将属性绑定TheColor到 a DependencyProperty

public static readonly DependencyProperty TheColorProperty = 
DependencyProperty.Register("TheColor", typeof(System.Windows.Media.Color), typeof(YourWindow));

public System.Windows.Media.Color TheColor
{
    get { return (System.Windows.Media.Color)GetValue(TheColorProperty); }
    set { SetValue(TheColorProperty, value); }
}

之后,您可以绑定到TheColor DependencyProperty. 就我而言,我只是给主 Window/UserControl/Page 一个 x:Name 并绑定到它:

<SolidColorBrush Color="{Binding Path=TheColor, ElementName=yourWindowVar}" />
于 2010-02-19T13:58:02.873 回答