我正在制作有关体育新闻的简单应用程序。问题是,然后我尝试绑定数据时遇到此错误:


  类型为“ 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,您最终实际上将从基本标记中获得项目在列表中。

07-26 09:34
查看更多