请教一个问题:有如下场景:三个类:
class Directroies : ObservableCollection<Directroy>
class Directroy : ObservableCollection<File>
class FileWindows1中我公开了一个依赖属性
Public Directroies SystemDirectroies{get}
用于获取指定的目录以及目录中的文件然后将ListBox(Name:LB_1)的ItemsSource绑定到SystemDirectroies属性上再将另外一个ListBox(Name:LB_2)的ItemsSource绑定到 LB_1 的 SelectedItem 属性上目的是可以在 LB_2 中显示 LB_1 中选中目录中的文件信息。虽然在实践过程中没有出现异常,但由于三个类中的业务运行耗时较长,导致界面响应迟缓,目录与文件数一多,不仅程序启动缓慢,而且点选LB_1后响应缓慢,经常是点击后界面无响应等几秒……请问:是否存在某种异步的方法,让控件先呈现给用户一个信息,等到业务执行完毕后(类中的IsReady属性判断),再将结果呈现给用户。谢谢!

解决方案 »

  1.   

    再将另外一个ListBox(Name:LB_2)的ItemsSource绑定到 LB_1 的 SelectedItem 属性上 binding 可能有问题, LB_2、LB_1可以binding到同一个Source, Path不同即可,LB_1只需打开IsSynchronizedWithCurrentItem,具体可以参考WPF SDK示列看你的代码, 仅仅是为了显示一些文件信息, 用不着去讨论某种异步方法, 改善设计,改善算法,优化代码
      

  2.   

    有啊,使用控件的BegionInvoke,进行异步调用。
      

  3.   


    LB_1绑定的是class Directroies : ObservableCollection <Directroy>,其中的item就是class Directroy : ObservableCollection <File>如果像你所说的LB_2与LB_1使用相同的源,那么LB_2中的item不也是class Directroy : ObservableCollection <File>了吗?这样无法实现构想的LB_2中的item是class File