在使用Windows App SDK的WinUI 3桌面应用中如何获取DispatcherQueue并在ViewModel中使用
WinUI 3 项目在ViewModel中获取并使用DispatcherQueue的方法
WPF 中所有控件都继承自 DispatcherObject,因此可以很方便地获取 Dispatcher。如果是使用 Windows App SDK 的 WinUI 3 项目,可以按照以下方案实现DispatcherQueue的获取与在ViewModel中的使用:
以下实现方案基于mm8的优质回答扩展整理
- 第一步:在你的ViewModel中定义DispatcherQueue属性
代码示例:public Microsoft.UI.Dispatching.DispatcherQueue TheDispatcher { get; set; } - 第二步:在MainPage.xaml.cs的后台代码构造函数中获取UI线程的调度队列
必须在主窗口或页面的后台代码中执行该操作,才能获取到UI线程对应的调度队列
代码示例:ViewModel.TheDispatcher = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
完成上述配置后,就可以在ViewModel中直接调用该调度队列执行UI线程操作,示例用法如下:
TheDispatcher.TryEnqueue(() => { // 此处编写需要在UI线程执行的代码 });
注:本实现基于已有公认回答扩展,未作为独立答案发布,仅供有需要的开发者参考。
内容的提问来源于stack exchange,提问作者tinmac
相关产品推荐
相关产品推荐

