WPF ListView绑定+错误

本文关键字:错误 绑定 ListView WPF | 更新日期: 2023-09-27 17:51:25

我得到一个异常"对象引用未设置为对象的实例。"DataContext =" line. "如果我添加songs = new ListView();在此之前,我的listview是空的,尽管audiofiles列表不是

XAML:

<ListView  Height="Auto" HorizontalAlignment="Center" ItemsSource="{Binding}"
               VerticalAlignment="Center" Name="songList" Width="Auto" MinHeight="300" MinWidth="600">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="Auto" Header="Title" DisplayMemberBinding="{Binding Path=Title}" />
                <GridViewColumn Width="Auto" Header="Artist" DisplayMemberBinding="{Binding Path=Artist}" />
                <GridViewColumn Width="Auto" Header="Album" />
                <GridViewColumn Width="Auto" Header="Length" />
            </GridView>
        </ListView.View>
    </ListView>
c#

 public struct AudioFile
    {
        public String Artist;
        public String Title;
        public String Album;
        public String fileLocation;
        public String Length;
    }
//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;

WPF ListView绑定+错误

我怀疑您的代码在构造函数中,在songList尚未创建的地方。

//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;

尝试将其移动到Loaded事件中。

您的songs已经安装好了,那么songList呢?

我想你可能在尝试设置songList。ItemsSource = list中的构造函数,显然对象还没有构建。

在你的UI类中,初始化的最佳位置将只在Loaded事件或InitializeComponent方法之后。

更好的方法是使用MVVM。

这段代码是你写的吗-

//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;

在initializecomponent()方法被调用之前??你能提供一些关于你的代码位置的见解,这将有助于更好地理解情况吗?

只是一个建议,虽然不相关。我会说使用类而不是结构对象,因为WPF数据绑定只考虑属性,而不是字段。