C# 属性更改不会';没有生效,MVVM

C# 属性更改不会';没有生效,MVVM,c#,mvvm,windows-phone-8,windows-phone,windows-phone-7.1,C#,Mvvm,Windows Phone 8,Windows Phone,Windows Phone 7.1,我有这样一个ViewModel: public class ColorViewModel : INotifyPropertyChanged { private SolidColorBrush colorBrush; public SolidColorBrush ColorBrush { get { return colorBrush; } set {

我有这样一个ViewModel:

public class ColorViewModel : INotifyPropertyChanged
{
    private SolidColorBrush colorBrush;

    public SolidColorBrush ColorBrush
    {
        get
        {
            return colorBrush;
        }
        set
        {
            if (value != colorBrush)
            {
                colorBrush = value;
                NotifyPropertyChanged("ColorBrush");
            }
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (null != handler)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
MainViewModel
中,我定义了它:

public ColorViewModel AppColor { get; set; }
并在整个应用程序中使用它:

<Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded">
    <StackPanel Background="{Binding AppColor.ColorBrush}" Height="240">
    </StackPanel>
</Grid>

因为您将AppColor定义为

public ColorViewModel AppColor { get; set; }
将新值分配给AppColor时,notbody将收到通知。使MainViewModel也实现INotifyPropertyChanged并将AppColor声明更改为

private ColorViewModel appColor;

public ColorViewModel AppColor
{
    get
    {
        return appColor;
    }
    set
    {
        if (value != appColor)
        {
            appColor= value;
            NotifyPropertyChanged("AppColor");
        }
    }
}

您可以将定义该元素的XAML的其余部分发布到它的根元素吗完全显示绑定XAML。。您是如何设置新颜色值的?@bas@Gokul我已经更新了它
newColor
是类型为
ColorViewModel
的新值,我在其中一个页面中设置了它。我认为问题在于它在
MainViewModel
中的定义。当它是一个集合时,我使用了
ObservableCollection
,因此它捕获新的更改,但在这里我认为它不知道新的更改,对吗?
private ColorViewModel appColor;

public ColorViewModel AppColor
{
    get
    {
        return appColor;
    }
    set
    {
        if (value != appColor)
        {
            appColor= value;
            NotifyPropertyChanged("AppColor");
        }
    }
}