【发布时间】:2013-12-24 16:03:34
【问题描述】:
我有一个这样的 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>
它工作正常。但问题是:当我尝试更改值时,它不会出现,并且正在使用它的元素仍然显示旧值。怎么了?
App.ViewModel.AppColor = newColor;
【问题讨论】:
-
您能否发布定义该元素的 XAML 的其余部分,直到其根元素
-
完全显示 Binding XAML。你是如何设置 newColor 值的?
-
@bas @Gokul 我已经更新了。
newColor是ColorViewModel类型的新值,我将其设置在其中一个页面内。 -
我认为问题在于
MainViewModel中的定义。当它是一个集合时,我使用ObservableCollection所以它会捕捉到新的变化,但在这里我认为它不能知道新的变化,对吗?
标签: c# mvvm windows-phone-8 windows-phone windows-phone-7.1