2013-12-12 5 views
1

У меня есть Windows Phone 8 Pivot приложение, которое содержит автогенератор MainViewModel Переплетный механизм.Windows Phone 8 Binding

Я изменил класс MainViewModel в соответствии с моими потребностями и изменил разметку MainPage.xaml так, чтобы она привязывалась к правильным свойствам.

Все в порядке.

Теперь - У меня есть класс, который вызывает веб-службу и метод обратного вызова, который срабатывает при получении данных:

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 «s имеют частный setters:

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

Каждый из этих объектов имеют NotifyPropertyChange событие.

Итак, как я могу заполнить объектыи Tweets и сделать всю работу связывания автоматически при извлечении данных из веб-службы? Как сделать связь UI/Mainpage.xaml с классом веб-службы и классом MainViewModel?

+0

Означает ли служба возврат коллекции предметов или всего лишь одного объекта? Что внутри SignViewModel? –

+0

'Signs.Add (результат)' возможно? –

+0

Он возвращает коллекцию Знаков. Так что это будет что-то вроде «Signs = result»; – Subby

ответ

0

Чтобы решить проблему, я просто изменил setters на публикацию для Signs и Tweets. Как только это было на месте, NotifyPropertyChange работал, это волшебство и автоматически привязано к представлению. Магия! Интересно, почему разработчики Microsoft сделали сеттеры частными .....

+0

Это не просто сеттеры, которые являются частными. Все автоматически по умолчанию закрывается на C#. Кроме классов, которые по умолчанию являются внутренними –

+0

Да, я это знаю. Мне просто интересно, почему Microsoft сделала объекты ViewModel закрытыми, поскольку обновление их вне класса ViewModel, насколько я могу предположить, более чем вероятно. – Subby