我有一个UserControl,它有一个显示Client对象列表的ListView。双击其中一行将播放动画并转换到另一个UserControl,该控件显示该客户端的帐户列表。
第二个用户控件绑定到Client对象上的Accounts属性。帐户列表在第一次访问该属性时加载。如果帐户列表很小,这一切都很有效。如果帐户列表很大,则双击和出现的帐户列表之间会有明显的延迟。动画根本不播放。
我理解这里发生了什么,但我不确定解决问题的最佳方法。我将如何制作动画仍然播放并显示第二个用户控件,但是在加载时会显示帐户列表?我知道我将需要异步加载列表视图,并且我没有使用BackgroundWorker的问题,但我不确定这种加载会发生在哪里。
帐户列表是ObservableCollection,Client对象实现INotifyPropertyChanged,但是不会为accounts属性调用PropertyChanged,因为它没有setter。
答案 0 :(得分:1)
我认为您需要查看WPF中的虚拟化控件 - 这些控件只显示所需内容而不是整个列表,因此比标准ListView快得多。
答案 1 :(得分:1)
您可以尝试在绑定上设置IsAsync = true,例如:{Binding Path = Accouns,IsAsync = true}