我是WPF和C#的新手,并且主要是通过使用代码示例构建我的第一个应用程序。我相信可能有更好的方法来做到这一点,我还没有理解,所以我会向你们提出一些建议。wpf如何刷新绑定的viewmodel
我有一堆嵌套对象的treeview控件,这些嵌套对象从我也构建的WCF服务中下载到ObservableCollection viewmodel中。我在XAML的Windows.Resources中声明了viewmodel。
我树状然后结合到静态资源通过它的键名。
项= “{绑定源= {StaticResource的MyCatalogModel},路径=项目,模式=双向,UpdateSourceTrigger =的PropertyChanged}”
在树中的数据保存在本地的文件。当视图模型被实例化时,它读取该文件,或者如果该文件不存在,则创建该文件。
我现在有2个相关的问题。
有时导入的数据对象相当大,有很多嵌套的对象(子对象)。这需要很长时间来更新树。我如何加快速度?我可以“关闭”通知ObservableCollection的变化的东西,并刚刚完成时重新加载(重新绑定)视图模型?
我想让用户能够基本清除树中的所有项目并从头开始。我有转储底层文件的代码,正如我所说,当新的视图模型被实例化时,它将被重新创建,但我不知道如何“重置”资源和树的绑定。我该怎么做呢?
感谢所有人的回应和任何代码片段将不胜感激!
您可以通过1)将TreeView绑定到视图模型上的一个属性(就像您已经拥有'Items'一样),从而加快TreeView的速度。 2)当你加载你的数据时,在本地变量中创建* new *'ObservableCollection'并将数据加载到它中。 3)最后,将局部变量赋值给'Items'属性。这会导致TreeView重新绑定/刷新到已经填充的新ObservableCollection的内容,而不是更新所发生的每个INotifyCollectionChanged事件。 – Steve