使用 C++/winrt 响应文本框中的事件时,我需要使用 ScrollViewer.ChangeView()。麻烦的是,调用执行时什么也没有发生,我希望那是因为那一刻代码在错误的线程中;我已阅读这是导致 ChangeView() 缺少可见结果的原因。看来正确的做法是使用 CoreDispatcher.RunAsync 来更新 UI 线程上的滚动条。但是,此示例代码仅在 C# 和托管 C++ 中提供,要弄清楚这在普通 C++ 中的外观是一件棘手的事情。无论如何,我不明白。有没有人有在 C++/winrt 中调用 UI 线程上的方法的正确方法的示例?谢谢。
[更新:] 我找到了另一种似乎可行的方法,我将在这里展示,尽管我仍然对上述问题的答案感兴趣。另一种方法是创建一个 IAsyncOperation,归结为:
IAsyncOperation<bool> ScrollIt(h,v, zoom){
co_await m_scroll_viewer.ChangeView(h,v,zoom);
}