我想将窗口的背景绑定到某个字符串属性,这样当属性发生变化时我会有不同颜色的渐变背景:
<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));
}
但背景根本没有变化。 有什么问题?
答案 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 ......可能会发现学习和理解基础知识很好......