绑定窗口的背景

时间:2011-01-20 14:57:03

标签: wpf data-binding

我想将窗口的背景绑定到某个字符串属性,这样当属性发生变化时我会有不同颜色的渐变背景:

<Window.Background>
    <LinearGradientBrush>
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="White" Offset="0"/>
            <GradientStop Color="{Binding Source={RelativeSource Mode=Self}, 
                                          Path=backgroud_color}" Offset="1"/>
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
</Window.Background>
代码背后的代码:

public event PropertyChangedEventHandler PropertyChanged;

private string _backgroud_color;
public string backgroud_color
{
   get { return _backgroud_color; }
   set
   {
      _backgroud_color = value;
      OnPropertyChanged("backgroud_color");
   }
}

public void OnPropertyChanged(string property_name)
{
   if (PropertyChanged != null)
      PropertyChanged(this, new PropertyChangedEventArgs(property_name));
}

但背景根本没有变化。 有什么问题?

2 个答案:

答案 0 :(得分:1)

问题是Binding中的RelativeSource。它将引用没有backgroud_color属性的GradientStop。您是否为Window设置了DataContext?在这种情况下,您可以像这样

绑定到backgroud_color
<Window.Background>
    <LinearGradientBrush>
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="White" Offset="0.5"/>
            <GradientStop Color="{Binding Path=backgroud_color}" Offset="1" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
</Window.Background>

背后的代码

public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;
}

答案 1 :(得分:0)

你可以通过以下link ......可能会发现学习和理解基础知识很好......