我有WPF窗口視圖,其中包含列表視圖具有列表綁定。一切工作很好,直到我更新目標源,然後當從列表視圖請求selecteditem時,我得到的對象引用未設置爲對象錯誤消息的實例。更新列表視圖的綁定導致對象引用未設置爲對象的實例
下面的代碼正在創建一個wcf azure web服務的新實例,並且這個實例綁定到了wpf中的listview。它效果很好,所有的行都包含正確的信息。
問題是,當我想更新新項目的來源。
ServiceReference1.Service1Client server = new ServiceReference1.Service1Client();
public List<ServiceReference1.patient> PatientCollection
{
get
{
return server.getPatients().ToList();
}
}
我使用定時器調度程序正常工作更新定時事件中的源代碼。
PatientListView.GetBindingExpression(ListView.ItemsSourceProperty).UpdateTarget();
但是,當我想要更新後,我得到選定的項目,我得到的異常。
private void PatientListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//TabControl1.SelectedIndex = 1;
var item = (ServiceReference1.patient)PatientListView.SelectedItem;
if (item.ews >= 5)
{
var theme = ThemeManager.DetectAppStyle(Application.Current);
var accent = ThemeManager.GetAccent("Red");
ThemeManager.ChangeAppStyle(Application.Current.Resources, accent, theme.Item1);
....not related code omitted...
}
正好出現在變種項=(ServiceReference1.patient)PatientListView.SelectedItem該錯誤;
任何解決方案,以更新什麼在選擇更改方法,以及將不勝感激。
你確定這是異常被拋出就行了,在我看來,當你更新目標源時,所選項目變爲null,因此* item.ews *會拋出NRE? – NValchev
你是正確的,它是在if(item.ews> = 5)拋出異常的下一行。但我不明白爲什麼它會是空的,如果我更新目標源和選定的項目設置每次選擇更改。 – rkleman12
這是預料之中的,改變ItemsSource意味着改變物品,當物品發生變化時你怎麼能有相同的選擇。例如,如果你選擇了第16行,那麼更新源代碼,但這次只提供了15個項目,所以如果選擇被保留了,就會拋出像IndexOutOfRangeException之類的東西,因爲沒有第16個元素 – NValchev