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。したがって、値をaに設定し、のcolorプロパティをあなたの:にSolidColorBrushバインドします。BrushTheColor DependencyProperty

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

私の例では、プロパティTheColorDependencyProperty:にバインドしました。

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 に答える