2017-05-03 100 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語句之後,一切都很好用。

感謝反正幫助:)