2013-06-24 100 views
0

我是WP8開發中的新手。我一直在關注一個在線課程幾個星期,本課程的第二個任務是開發一個應用程序來顯示與城市有關的天氣,一些新聞和照片。 到目前爲止,我已經開發了MVVM模式下的應用程序,使用Panorama控件作爲我需要顯示的不同內容的評判者。 爲了不再這樣做,我面臨的問題是現在顯示從Web服務檢索到的XML數據。綁定在WP8中的MVVM中不起作用

的XAML是:

<phone:panorama x:Name="myPanorama" 
      DataContext = {Binding Source="WeatherViewModel"}> 
    <PanoramaItem header="MyWeather"> 
     <Textblock x:name="txtCity" 
     Text = {Binding Weather.City} 
     </Textblock>  
    </PanoramaItem> 
    <panoramaItem header="Config"> 
     <Text x:Name="txtGetCity"/> 
     <Button x:Name="btnGetCity" 
       Command={Binding GetWeatherCommand}/> 
    </panoramaItem> 
</phone:panorama> 

我的視圖模型:

public class WeaterViewModel : NotificationEnableObject 
{ 
    private Weather _currentWeather;   
    public Weather GetCurrentWeather 
    { 
     get 
     { 
      if (_currentWeather == null) 
       _currentWeather = new Weather(); 

      return _currentWeather; 
     } 
     set { _currentWeather = value; 
     OnPropertyChanged("GetCurrentWeather"); 
     } 
} 

//Constructor  ServiceModel serviceModel = new ServiceModel(); 
public WeatherViewModel() 
{ 
     serviceModel.GetWeatherCompleted += (s, a) => 
     { 
      _currentWeather = new Clima(); 
      _currentWeather.City= a.Results[0].City; 
      _currentWeather.tempC = a.Results[0].tempC; 
     }; 

     getWeatherCommand = new ActionCommand(null); 
    } 

    ActionCommand getWeatherCommand; // ActionCommand derivied from ICommand  
    public ActionCommand GetWeatherCommand 
    { 
     get 
     { 
      if (getWeatherCommand!= null) 
      { 
       getWeatherCommand = new ActionCommand(() => 
        { 
         //Call the Service who retrieved the data 
        }); 
      } 

      return getWeatherCommand; 
     } 
    } 

} 

指定的天氣是包含City屬性一個公共類。我已經嘗試過使用IObservableCollention以及howerver,結果是一樣的:-(

正如你在全景控制中看到的那樣,我有兩個部分,一個是我想要看到的城市,另一個是我想要看的城市顯示我從Web服務中獲得的信息。

任何線索,或幫助將是非常讚賞

祺!

+0

有了這個小小的代碼,只能猜測出現了什麼問題。你可以添加WeatherViewModel類的相關部分(也可能是天氣類)和數據加載的位置? –

+0

嗨Stefan Wexel。我修改了原帖子 – MikePR

回答

0

好吧,我認爲這是一個容易解決。 你設置GetCurrentWeather這方式:

 

_currentWeather = new Clima(); 
_currentWeather.City= a.Results[0].City; 
_currentWeather.tempC = a.Results[0].tempC; 
 

這不是觸發PropertyChanged事件。將其更改爲:

 

GetCurrentWeather= new Clima(); 
GetCurrentWeather.City= a.Results[0].City; 
GetCurrentWeather.tempC = a.Results[0].tempC; 
 

你應該沒問題。

+0

Hi Stefan。我沒有回答你,因爲我沒有接近我的筆記本電腦。我測試了你的建議,它的工作正常。現在,我看到了什麼問題。非常感謝你的幫助。 – MikePR