我不断收到此错误:当我尝试将数据绑定到Panorama控件时,在使用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>
答案 0 :(得分:2)
你的问题是你在XAML中构建Panorama就好像它是静态的而不是准备它是数据绑定的。
查看数据绑定全景控件的快速教程:
Data Binding Panorama Control WP7 MVVM
注意为控件构建XAML的方式不同。您不需要在Panorama控件上设置Items集合,而是需要设置HeaderTemplate和ItemTemplate,以便控件知道在绑定数据后如何呈现内容。