2011-04-22 120 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数据绑定只考虑属性而不考虑字段。 当然,这不是错误的原因。