我正在制作有关体育新闻的简单应用程序。问题是,然后我尝试绑定数据时遇到此错误:
类型为“ System.InvalidOperationException”的未处理异常
发生在PresentationFramework.dll中附加信息:项目
使用ItemsSource之前,collection必须为空。
这是xaml代码:
<ListView Name="ListBoxWithNews" ItemsSource="{Binding News}" Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding imageURL}" Width="75" Height="75" />
<StackPanel>
<TextBlock Text="{Binding Title}" Width="200" />
<TextBlock Text="{Binding Body}" Width="200" />
</StackPanel>
</StackPanel>
</ListView>
我以这种方式设置数据上下文:
private void EnglandNews_Click(object sender, RoutedEventArgs e)
{
NewsModelView model = new NewsModelView("http://topsport.ibox.bg/rss_18");
this.DataContext = model;
}
有什么建议可能是什么问题?
最佳答案
您需要将该StackPanel
包装在DataTemplate
中:
<ListView Name="ListBoxWithNews" ItemsSource="{Binding News}" Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding imageURL}" Width="75" Height="75" />
<StackPanel>
<TextBlock Text="{Binding Title}" Width="200" />
<TextBlock Text="{Binding Body}" Width="200" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果不使用
ItemTemplate.DataTemplate
,您最终实际上将从基本标记中获得项目在列表中。