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;
我怀疑您的代码在构造函数中,在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数据绑定只考虑属性,而不是字段。