У меня есть вызов WCF, который возвращает список объектов.
Я создал приложение WP7 Silverlight Pivot и изменил MainViewModel для загрузки данных из моей службы WCF, метод LoadData теперь выглядит следующим образом
public ObservableCollection<Standing> Items { get; private set; }
public void LoadData()
{
var c = new WS.WSClient();
c.GetStandingsCompleted += GetStandingsCompleted;
c.GetStandingsAsync();
}
void GetStandingsCompleted(object sender, GetStandingsCompletedEventArgs e)
{
Items = e.Result;
this.IsDataLoaded = true;
}
Это выполняется, и если я ставлю точку останова на завершенное событие, я вижу, что оно прошло успешно, и моя коллекция Предметов теперь содержит 50 нечетных элементов.Однако список в пользовательском интерфейсе не отображает их.
Если я добавлю следующую строку в конец моего метода LoadData, я вижу, что 1 элемент появляется в списке в пользовательском интерфейсе
Items.Add(new Standing(){Team="Test"});
Это доказывает, что привязки верны, но кажется, чтоиз-за задержки в вызове Asynch WCF пользовательский интерфейс не обновляется.
Для справки я обновил список MainPage.xaml, чтобы привязать его к свойству Team моего объекта Standing
<ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding Team}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding Team}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Есть идеи, что я делаю не так?
Спасибо