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 中构建全景图,就好像它是静态的,而不是准备将其绑定为数据绑定。

看看这个数据绑定全景控件的快速教程:

数据绑定全景控件 WP7 MVVM

请注意为控件构造 XAML 的方式的不同。无需在 Panorama 控件上设置 Items 集合,您需要设置 HeaderTemplate 和 ItemTemplate,以便控件知道在数据绑定到它后如何呈现事物。

于 2011-07-25T13:48:16.600 回答