更新列表视图的绑定导致对象引用未设置为对象的实例
Updating Binding of a listview is causing Object reference not set to an instance of an object
我有一个 WPF window 视图,其中包含一个具有列表绑定的列表视图。一切都很好,直到我更新了目标源,然后当从列表视图请求选定项时,我得到一个对象引用未设置为对象错误消息的实例。
下面的代码正在创建一个 wcf azure web 服务的新实例,它绑定到 wpf 中的一个列表视图。效果很好,所有行都包含正确的信息。
问题是当我想更新新项目的来源时。
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...
}
错误出现在 var item = (ServiceReference1.patient)PatientListView.SelectedItem;
任何更新选择更改方法中的内容的解决方案也将不胜感激。
您应该注意到 ListView
的 SelectedItem
可以是 null
(也就是没有选择)。所以你需要处理这种情况。
当您 change/replace ListView 的绑定集合时,可能会发生这种情况。
var item = (ServiceReference1.patient)PatientListView.SelectedItem;
if (item != null && item.ews >= 5)
{
// your code
}
您还可以检查传递给您的方法的 SelectionChangedEventArgs
,以检查已选择的内容 (RemovedItems
) 和已选择的内容 (AddedItems
)
我有一个 WPF window 视图,其中包含一个具有列表绑定的列表视图。一切都很好,直到我更新了目标源,然后当从列表视图请求选定项时,我得到一个对象引用未设置为对象错误消息的实例。
下面的代码正在创建一个 wcf azure web 服务的新实例,它绑定到 wpf 中的一个列表视图。效果很好,所有行都包含正确的信息。
问题是当我想更新新项目的来源时。
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...
}
错误出现在 var item = (ServiceReference1.patient)PatientListView.SelectedItem;
任何更新选择更改方法中的内容的解决方案也将不胜感激。
您应该注意到 ListView
的 SelectedItem
可以是 null
(也就是没有选择)。所以你需要处理这种情况。
当您 change/replace ListView 的绑定集合时,可能会发生这种情况。
var item = (ServiceReference1.patient)PatientListView.SelectedItem;
if (item != null && item.ews >= 5)
{
// your code
}
您还可以检查传递给您的方法的 SelectionChangedEventArgs
,以检查已选择的内容 (RemovedItems
) 和已选择的内容 (AddedItems
)