/ / Panorama Binding no WP7, a coleção Items deve estar vazia antes de usar o ItemsSource - data-binding, windows-phone-7, controle de panorama

A vinculação de panorama no WP7, a coleta de itens deve estar vazia antes de usar ItemsSource - ligação de dados, windows-phone-7, controle de panorama

Eu recebo este erro: coleção de itens deve estar vazia antes de usar ItemsSource, quando eu tentar vincular dados a um controle Panorama. abaixo está o meu snippet xaml.

<controls:Panorama x:Name="panorama">
<controls:PanoramaItem >
<StackPanel>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</controls:PanoramaItem>
</controls:Panorama>

no meu código por trás (xaml.cs), eu faço algo assim:

protected override void OnNavigatedTo(NavigationEventArgs e) {
string id = NavigationContext.QueryString["id"];
ObservableCollection<MyObject> list = DataAccessService.get(id);
panorama.ItemsSource = list;
base.OnNavigatedTo(e);
}

note que MyObject tem uma propriedade Text. qualquer ajuda é apreciada.

depois de modificá-lo pelo link abaixo, a mesma exceção ainda é lançada.

<controls:Panorama x:Name="panorama">
<controls:Panorama.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</controls:Panorama.HeaderTemplate>
<controls:PanoramaItem >
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</controls:PanoramaItem>
</controls:Panorama>

finalmente, depois de continuar com a ajuda do usuário abaixo, esta é a solução que se livrou da exceção.

<controls:Panorama x:Name="panorama">
<controls:Panorama.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</controls:Panorama.HeaderTemplate>
<controls:Panorama.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</controls:Panorama.ItemTemplate>
</controls:Panorama>

Respostas:

2 para resposta № 1

Seu problema é que você está construindo o Panorama em XAML como se fosse estático em vez de prepará-lo para ser vinculado a dados.

Dê uma olhada neste tutorial rápido para um controle Panorama de vinculação de dados:

Controle Panorama de vinculação de dados WP7 MVVM

Observe a diferença em como seu XAML está sendoconstruído para o controle. Em vez de definir a coleção de itens no controle Panorama, você precisa definir o HeaderTemplate e ItemTemplate para que o controle saiba como processar as coisas uma vez que os dados são vinculados a ele.