[英]WPF ListView Binding + Error
我收到一個異常“對象引用未設置為對象的實例”。 在“ songs.DataContext =”行上。 如果我添加歌曲= new ListView(); 在此之前,即使音頻文件列表不是
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
呢?
我認為您可能正在嘗試在構造函數中設置songList.ItemsSource = list,顯然該對象尚未構建。
在UI類中,最好的初始化位置僅是在Loaded事件中或在InitializeComponent方法之后。
更好的方法是使用MVVM。
您在編寫此代碼-
//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;
在為視圖調用IniitializeComponent()方法之前? 您能否提供更多有關代碼放置的見解,從而有助於更好地了解情況。
只是一個建議,盡管沒有關系。 我會說使用類而不是結構對象,因為WPF數據綁定僅考慮屬性,而不考慮字段。 當然,這不是錯誤的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.