2012-10-18 129 views
2

我在我的MainPage中實現了一個刷新應用程序欄按鈕,我想用這個按鈕的click事件來重新加載視圖模型。但是,我不確定如何完成此操作。當第一次加載我的看法,認爲模型被稱爲在XAML像這樣:如何刷新ViewModel來更新視圖

DataContext="{Binding InformationProvider, Source={StaticResource DeviceInformationViewModel}}" 

在我的視圖模型是

public class DeviceInformationViewModel 
{ 
    private static IInformationProvider informationProvider; 

    /// <summary> 
    /// Returns the device information to display. 
    /// </summary> 
    public IInformationProvider InformationProvider 
    { 
     get 
     { 
      if (informationProvider == null) 
      { 
       if (DesignerProperties.IsInDesignTool) 
       { 
        informationProvider = new FakeInformation(); 
       } 
       else 
       { 
        informationProvider = new RealInformation(); 
       } 
      } 

      return informationProvider; 
     } 
    } 
} 

InformationProvider本質上只是從模型獲取設備信息。這在加載應用程序時執行一次,但我也想在刷新按鈕單擊事件中執行此操作。我可以如何在我的MainPage後面的代碼中完成此操作?另外,這是正確的方法嗎?如果沒有,我該如何去完成這個解決方案?

回答

2

對視圖模型的綁定不會更新,除非他們知道這樣做。執行此操作的典型方法是在視圖模型上實現INotifyPropertyChanged,然後在視圖模型上的屬性發生更改時調用NotifyPropertyChanged。在你的情況下,你可以簡單地實施INotifyPropertyChanged,然後在刷新按鈕中爲每個屬性調用NotifyPropertyChanged方法。