2011-01-20 2 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を設定しましたか?その場合は、あなただけのあなたはそれが良い基礎を学び、理解することを見つけるかもしれない......次link通過することができ

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

の後ろにこの

<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に結合することができ、 .....