Wpf привязка к переднему плану с помощью GridViewColumn - PullRequest
1 голос
/ 19 февраля 2010

Я делаю:

<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 ...

Спасибо за вашу помощь

1 Ответ

1 голос
/ 19 февраля 2010

Легко, вы не можете привязать к Color.Значение Foreground должно быть установлено на Brush.Поэтому я бы установил значение SolidColorBrush и привязал свойство цвета Brush к вашему TheColor DependencyProperty:

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

В моем примере я просто привязал свойство TheColorна 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.В моем случае я просто присвоил главному окну / UserControl / Page значение x: Name и привязал его к:

<SolidColorBrush Color="{Binding Path=TheColor, ElementName=yourWindowVar}" />
...