每当我更改其中的项目时,WPF ListView都会抛出异常

时间:2017-05-03 19:24:53

标签: c# wpf windows visual-studio listview

所以我已经有几天这个问题,我有一个简单的ListView项目,动态填充。用户可以添加应显示在显示器上的列表条目。这有效,但是当我尝试对listView Items做任何事情时,删除甚至刷新它们,我得到一个NullReferenceException。请看下面的代码。

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,Refresh,ItemsSource以及我能想到的所有其他内容:/。每次我尝试从列表中删除任何内容时,我都会得到NullReferenceException。最糟糕的是,它并没有真正向我显示错误发生的一条线,因此我假设它不受我的控制。但是当我试图修复.Net框架时,它说没有错。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

显然,在Entry类的'Equal'运算符中,p对象有时为null。现在我仍然不知道它来自哪里,但在添加了额外的if语句之后,一切都运行得非常好。

感谢您的帮助:)