我正在尝试绑定背景颜色但由于某种原因它没有更新控件,我可以看到它达到了属性的get但它没有更新GUI。有什么我想念的吗?
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
// ...
private Color m_myColorProperty;
public Color MyColorProperty
{
get
{
return m_myColorProperty;
}
set
{
m_myColorProperty = value;
OnPropertyChanged("MyColorProperty");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
和xaml:
<Window x:Class="TestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.Background>
<SolidColorBrush Color="{Binding MyColorProperty}"/>
</Grid.Background>
答案 0 :(得分:1)
您应该将Brush类型绑定为颜色。 SolidBrush,Gradient Brush等,如果你想要单色使用实心刷
答案 1 :(得分:0)
使用您的代码作为基础,在MainWindow
构造函数中添加以下内容为我提供了一个带有可爱粉红色背景的Window:
this.MyColorProperty = (Color)ColorConverter.ConvertFromString("#FFCC0099");
答案 2 :(得分:0)
因为您使用“this”(窗口)作为datacontext,使用DependencyProperty
而不是完成实施INotifyPropertyChanged
的工作会更简单吗?