Wpf binding to Foreground with GridViewColumn
I'm doing :
<ListView Margin="34,42,42,25" Name="listView1">
<ListView.View>
<GridView>
<GridViewColumn Width="550" Header="Value"开发者_JAVA技巧 DisplayMemberBinding="{Binding Path=MyValue}"/>
</GridView>
</ListView.View>
<ListView.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Green"/>
</Style>
</ListView.Resources>
</ListView>
and this is working, I can see my items in Green.
Now, I want to use a binding value with this, so I have a property :
private Color _theColor;
public System.Windows.Media.Color TheColor
{
get { return _theColor; }
set
{
if (_theColor != value)
{
_theColor = value;
OnPropertyChanged("TheColor");
}
}
}
but If I use this binding :
<Setter Property="Foreground" Value="{Binding Path=TheColor}"/>
It's not working...
How can I correct that ?
Of course, I'm setting the TheColor to Colors.Green ...
Thanks for your help
Easy, you can't bind to a Color. The Foreground need to be set to a Brush. So I would set the value to a SolidColorBrush and bind the Brush's color property to your TheColor DependencyProperty:
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{Binding Path=TheColor}" />
</Setter.Value>
</Setter>
</Style>
In my example I just bound the property TheColor to 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); }
}
After that, you can bind to the TheColor DependencyProperty. In my case, I just gave the main Window/UserControl/Page an x:Name and bound to that:
<SolidColorBrush Color="{Binding Path=TheColor, ElementName=yourWindowVar}" />
加载中,请稍侯......
精彩评论