在 WPF 中,所有控件都继承 DispatcherObject,并且很容易到达 Dispatcher。
如何使用 WinUI 3 Windows App SDK 获取 DispatcherQueue 并在 ViewModel 中使用它?
编辑
我的实现扩展了 mm8 最受赞赏的答案。
在我的 ViewModel 中创建一个属性
public Microsoft.UI.Dispatching.DispatcherQueue TheDispatcher { get; set; }
然后在我的 MainPage.xaml.cs 代码隐藏MainPage_Loaded
事件中获取调度程序
ViewModel.TheDispatcher = this.DispatcherQueue;
现在我的 VM 中有调度程序,因此它易于从 VM 中使用:
TheDispatcher.TryEnqueue(() =>
{
// some ui thread work
});
注意:我没有将此作为答案发布,因为有一个答案,这是我的实现,以帮助任何有兴趣的人。