我有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...
}
错误出现在 var item =(ServiceReference1.patient)PatientListView.SelectedItem;
任何更新选择更改方法中的内容的解决方案都将非常受欢迎。
答案 0 :(得分:1)
您应该注意SelectedItem
的{{1}}可以是ListView
(也就是未选中)。所以你需要处理这种情况。
更改/替换ListView的绑定集合时可能会发生这种情况。
null
另外,您可以查看传递给您方法的var item = (ServiceReference1.patient)PatientListView.SelectedItem;
if (item != null && item.ews >= 5)
{
// your code
}
,以检查所选内容(SelectionChangedEventArgs
)和所选内容(RemovedItems
)