C# 属性更改不会';没有生效,MVVM
我有这样一个ViewModel: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 {
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");
}
}
}