当前位置: 首页 > 编程语言 > C#

如何将集合绑定到WPF中的ListView分享

时间:2023-04-11 00:02:59 C#

C#学习教程:如何在WPF中将集合绑定到ListView这个搜索过程需要很长时间,所以我不得不异步调用它。当搜索算法找到一个文件时,它会触发一个事件。我的MainWindow实例侦听此事件并需要更新GUI。如何将这些“添加”文件绑定到ListView?我想我可以使用ObservableCollection实例,但我不知道如何绑定它。我删除了所有不相关的控件和代码。这里有两个相关文件。MainWindow.xaml:MainWindow.xaml.cs:使用System.IO;使用System.Threading.Tasks;publicpartialclassMainWindow{privateSearchLogic_backgroundSearch;privateasyncvoidSearch(objectsender,RoutedEventArgse){//TODO:清除结果_backgroundSearch=newSearchLogic("",newDirectoryInfo("C:"));_backgroundSearch.FileAdded+=FileAdded;等待Task.Run(新动作(_backgroundSearch.Search));}privatevoidFileAdded(objectsender,FileAddedEventArgseventArgs){//TODO:addeventArgs.FiletoResults//eventArgs.FileisaninstanceofFileInfo}}这是一个简单的例子你的XAMLNameModified你的守则背后publicpartialclassMainWindow:Window{publicclassFileInfo{publicstringName{get;放;}publicDateTimeLastModified{get;放;}publicFileInfo(stringname){Name=name;LastModified=DateTime.Now;}}ObservableCollectionmFileNames=newObservableCollection();公共ObservableCollection文件eNames{得到{返回mFileNames;}}publicMainWindow(){DataContext=this;初始化组件();}privatevoidWindow_Loaded(objectsender,RoutedEventArgse){ThreadPool.QueueUserWorkItem((x)=>{while(true){Dispatcher.BeginInvoke((Action)(()=>{mFileNames.Add(newFileInfo("X"));}));Thread.Sleep(500);}});如果你运行这个问题,你会注意到列表框每半秒更新一次新项目基本上要注意的关键是ObservableCollection只能从UI线程更新,所以如果你重构上面的代码,你会需要以某种方式使用当前UI线程的Dispatcher来更新它以上就是C#学习教程的全部内容:如何在WPF中将集合绑定到ListView。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: