0
我正在写一个Windows Phone应用程序;作为一名优秀的公民,我正在使用MVVM模式:)由于在MVVM方面不够专业,我面临以下问题,希望我能在这里找到解决方案。如何更改ViewModel属性的属性并使更改反映在绑定控件上?
我有以下代码:
XAML
<Grid x:Name="LayoutRoot" Background="Transparent" DataContext="{Binding MyPOCO}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding IsActive}"/>
</StackPanel>
</Grid>
代码隐藏
this.DataContext = new ViewModel();
视图模型
public class ViewModel : ViewModelBase
{
private POCO myPOCO;
public ViewModel()
{
this.myPOCO = new POCO();
this.ToggleActiveStatusCommand = new RelayCommand(this.ToggleActiveStatus);
}
public POCO MyPOCO
{
get
{
return this.myPOCO;
}
}
public RelayCommand ToggleActiveStatusCommand { get; private set; }
private void ToggleActiveStatus()
{
this.MyPOCO.IsActive = !this.MyPOCO.IsActive;
System.Diagnostics.Debug.WriteLine(this.MyPOCO.IsActive);
this.RaisePropertyChanged("MyPOCO");
}
}
POCO
public class POCO
{
public string Name { get; set; }
public bool IsActive { get; set; }
}
我试图做到的,是改变TextBlock的文本的IsActive变化值......怎么办?我的意思是将POCO所需的属性作为属性暴露给ViewModel。
感谢
我不能说:重新绑定everthing作为我的DataContext被改变;就像我在'this.RaisePropertyChanged(“MyPOCO”)中所做的那样? – TheBlueSky 2012-07-20 11:26:37
如果你为你的ViewModel实例创建了一个变量,你可以设置你正在做的DataContext,然后进行POCO修改,然后将DataContext设置为NULL,然后将DataContext设置回你的变量,这会重新绑定,更改。 – 2012-07-20 14:19:36
我并不完全明白。谁将把DataContext设置为NULL?我无法从ViewModel访问它,并且我的View代码不知道是否有更改。如果是WPF,我可能会利用'NotifyOnSourceUpdated',但在WP7中我没有这种奢侈品......或者我在这里错过了什么? – TheBlueSky 2012-07-20 21:23:51