簡體   English   中英

WPF ListView綁定+錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM