2011-04-22 131 views
1

我收到一個異常「對象引用未設置爲對象的實例」。在「songs.DataContext =」一行。如果我添加歌曲=新的ListView();之前我的列表視圖是空的,即使語音文件的列表不是WPF 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; 

回答

1

我懷疑你的代碼是在構造函數中,在songList尚未創建的地方。

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

嘗試在加載事件其移動來代替。

0

songs明確instatiated,但什麼songList

0

我想你可能試圖在你的構造函數中設置songList.ItemsSource = list,顯然這個對象還沒有構建。

在您的UI類中,初始化的最佳位置將僅在Loaded事件或InitializeComponent方法之後。

更好的方法是使用MVVM。

0

你編寫這些代碼 -

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

IniitializeComponent前()方法被調用的觀點?你能否提供更多關於你的代碼佈局的見解,這將有助於更好地理解情況。

只是一個建議,但不相關。我會說使用類而不是結構對象,因爲WPF數據綁定只考慮屬性而不考慮字段。 當然,這不是錯誤的原因。