2011-01-20 88 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 ......可能會發現好的學習和了解基礎知識.....