2013-12-12 146 views
1

我有一個Windows Phone 8 Pivot應用程序,其中包含自動生成的MainViewModel綁定機制。Windows Phone 8綁定

我已將MainViewModel類更改爲符合我的需要,並更改了MainPage.xaml標記,以便將其綁定到正確的屬性。

一切都好。

現在 - 我有一個調用Web服務,並接收到數據時,其觸發回撥方法的類:

private void GetSigns_Completed(object sender, OpenReadCompletedEventArgs e) 
{ 
    using (var sr = new StreamReader(e.Result)) 
    { 
     var data = sr.ReadToEnd(); 
     var result = JsonConvert.DeserializeObject<SignViewModel>(data); 
    } 
} 

正如你所看到的,我沒有返回或與result填充任何東西因爲我不知道如何去做。該MainViewModel的屬性有私人setters

public ObservableCollection<SignViewModel> Signs { get; private set; } 
public ObservableCollection<TweetsViewModel> Tweets { get; private set; } 

每個對象有NotifyPropertyChange事件。

那麼如何填充SignsTweets對象並在從Web Service檢索數據時自動完成整個綁定?如何使UI/Mainpage.xaml與Web服務類和MainViewModel類通信?

+0

服務是否返回項目集合或只是一個對象? SignViewModel內有什麼? –

+0

'Signs.Add(result)'也許? –

+0

它返回一組符號。所以它會像'Signs = result'這樣的東西; – Subby

回答

0

爲了解決這個問題,我簡單地將setters更改爲公開SignsTweets。一旦到位,NotifyPropertyChange就會發揮它的魔力,並自動綁定到視圖。魔法!我想知道爲什麼微軟開發人員將這些安裝程序私人化......

+0

這不僅僅是私人的制定者。在C#中,所有內容都自動默認爲私有。除了默認爲內部的類別 –

+0

是的,我知道這一點。我只是想知道爲什麼微軟將ViewModel對象設置爲私有的,因爲我可以猜測,它們在ViewModel類之外更新它們的可能性更大。 – Subby