所以我一直有这个问题好几天了,我有一个简单的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框架时,它说没有错。有任何想法吗?
ListView.ItemsSource'只是绑定'到一个'的ObservableCollection',并添加/从集合中删除项目。你在这里重新发明一个方形车轮。 –
你的编码方式看起来像WinForms。如果你使用WPF,最好忘记一下,不要像WinForms那样做。看看WPF如何利用数据绑定来呈现UI中的任何数据/内容/状态...... – elgonzo
将它绑定到ObservableCollection实际上是我尝试的第一件事,同样的问题在那里。我可以很好地添加它,但不会让我删除或更改任何内容。 –
gogo199432