2017-05-03 95 views
0

所以我一直有这个问题好几天了,我有一个简单的ListView项目被动态填充。用户可以添加到应该显示在显示屏上的条目中。这工作,但是当我试图做任何事情与listView项目,删除甚至刷新它们,我得到一个NullReferenceException。请看下面的代码。WPF ListView在每次更改项目时都会抛出异常

XAML文件(片段):

<ListView x:Name="listView" Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="10,97,0,0" Grid.Row="1" VerticalAlignment="Top" Width="112" IsSynchronizedWithCurrentItem="False"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Names" DisplayMemberBinding="{Binding documentName}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

这里是从的.cs代码片段:

public class Entry { 
    public string documentName { 
    get; 
    set; 
    } 

    public string languageAssistantName { 
    get; 
    set; 
    } 

    public string assignmentDate { 
    get; 
    set; 
    } 

    public string deadline { 
    get; 
    set; 
    } 

    public string progress { 
    get; 
    set; 
    } 

    public string supervisorName { 
    get; 
    set; 
    } 

    public string remarks { 
    get; 
    set; 
    } 

    public string proofread { 
    get; 
    set; 
    } 

    public Entry(string documentName, string assignmentDate, string deadline, string supervisorName, string remarks, string LAName, string progress, string proofread) { 
    this.documentName = documentName; 
    this.assignmentDate = assignmentDate; 
    this.deadline = deadline; 
    this.supervisorName = supervisorName; 
    this.remarks = remarks; 
    this.languageAssistantName = LAName; 
    this.progress = progress; 
    this.proofread = proofread; 
    } 
} 

List <Entry> entryList = new List <Entry>(); 

private void UpdateListView() //This is the code that adds the new entries to the listView, this works 
{ 
    listLabel.Text = ""; 
    for (int i = 0; i < entryList.Count; i++) { 
    listLabel.Text += i + " | " + entryList[i].ToString() + "\n\n"; 
    listView.Items.Insert(0, entryList[i]); 
    } 
} 

/*This is the part that throws exception 

*/ 
private void button_Click(object sender, RoutedEventArgs e) { 
    listView.Items.RemoveAt(0); 
} 

我与的SelectedItem,刷新的ItemsSource和其他一切我尝试这样做可以想到:/。每次我尝试从列表中删除任何内容时,都会收到NullReferenceException。最糟糕的是,它实际上并没有向我显示发生错误的地方,所以我认为这是我无法控制的事情。但是当我试图修复.Net框架时,它说没有错。有任何想法吗?

+2

ListView.ItemsSource'只是绑定'到一个'的ObservableCollection ',并添加/从集合中删除项目。你在这里重新发明一个方形车轮。 –

+2

你的编码方式看起来像WinForms。如果你使用WPF,最好忘记一下,不要像WinForms那样做。看看WPF如何利用数据绑定来呈现UI中的任何数据/内容/状态...... – elgonzo

+0

将它绑定到ObservableCollection 实际上是我尝试的第一件事,同样的问题在那里。我可以很好地添加它,但不会让我删除或更改任何内容。 – gogo199432

回答

1

好吧,显然我是个白痴。我不知道如果我在'Release'而不是'Debug'中启动我的项目,Visual Studio实际上拒绝显示错误的位置。所以切换回来后,我发现这个错误与listView完全无关。

显然,在Entry类的'Equal'运算符中,p对象有时为空。现在我仍然不知道这是从哪里来的,但是在添加了一条if语句之后,一切都很好用。

感谢反正帮助:)

相关问题