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