2011-01-20 86 views
0

我想一个窗口的背景结合到一些字符串属性,这样我会用不同的颜色渐变背景时属性的变化:绑定窗口的背景

<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)); 
} 

但背景完全没有改变。 问题是什么?

回答

1

问题是绑定中的RelativeSource。它会引用没有backgroud_color属性的GradientStop。你有没有为窗口设置DataContext?在这种情况下,你可以绑定像这样

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

守则backgroud_color背后

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

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