1

我正在尝试绑定背景颜色,但由于某种原因它没有更新控件,我可以看到它击中了属性的获取,但它没有更新 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>
4

3 回答 3

1

您应该绑定 Brush 类型而不是颜色。SolidBrush、Gradient Brush 等,如果你想要单色,请使用纯色画笔

于 2013-10-09T22:04:45.017 回答
0

由于您使用“this”(一个窗口)作为数据上下文,使用 aDependencyProperty而不是完成实现工作会更简单INotifyPropertyChanged吗?

于 2013-10-09T22:09:56.633 回答
0

使用您的代码作为基础,在MainWindow构造函数中添加以下内容为我提供了一个带有可爱粉红色背景的 Window:

this.MyColorProperty = (Color)ColorConverter.ConvertFromString("#FFCC0099");
于 2013-10-09T22:01:41.810 回答