1

このエラーが発生し続けます: データをパノラマ コントロールにバインドしようとすると、ItemsSource を使用する前にアイテム コレクションを空にする必要があります。以下は私のxamlスニペットです。

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

私のコード ビハインド (xaml.cs) では、次のようなことを行います。

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

MyObject には Text プロパティがあることに注意してください。どんな助けでも大歓迎です。

以下のリンクに従って変更した後も、同じ例外がスローされます。

<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>

最後に、以下のユーザーのヘルプをさらに続けた後、これが例外を取り除いた解決策です。

<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>
4

1 に答える 1

2

問題は、XAML で Panorama をデータ バインドする準備をするのではなく、静的であるかのように構築していることです。

データ バインディング パノラマ コントロールについては、次のクイック チュートリアルをご覧ください。

データ バインディング パノラマ コントロール WP7 MVVM

コントロール用に XAML を構築する方法の違いに注意してください。Panorama コントロールで Items コレクションを設定する代わりに、HeaderTemplate と ItemTemplate を設定して、データがバインドされた後のレンダリング方法をコントロールが認識できるようにする必要があります。

于 2011-07-25T13:48:16.600 に答える