【发布时间】:2021-08-07 17:39:40
【问题描述】:
我在 WPF 中有一个巨大的应用程序,我一步一步将 UI 移动到 UWP(使用 XamlIslands)。
在项目的列表视图中,我有一个非常复杂的项目模板(仍在 WPF 中),我想在 UWP 中创建 ListView 本身(因为平滑滚动)并显示来自WPF 项目模板。是否可以以某种方式将 WPF UI 注入到 UWP 列表项中?
更多背景:
- 默认情况下,WPF
ListView中的滚动非常不稳定(我的意思是它不像在 UWP ListView 中那样平滑)。 ListView 项可以覆盖整个屏幕(它还包含一个 Web 视图),因此从 UX 的角度来看这是不可接受的 - 是的,有一种方法可以在 WPF 中使其平滑,但后来我失去了虚拟化。但这非常重要,因为我可以在该列表中包含许多项目。
我也很欣赏任何其他想法。
【问题讨论】:
-
您想提供一些重现该行为的代码。当使用
Task.Run将繁重的功能正确释放到后台时,WPF 非常快(60fps),而所有事情都在 UI 线程中执行。我在这里看到一个 XY 问题meta.stackexchange.com/questions/66377/what-is-the-xy-problem。最终,当您在 WPF 主机控件(并且可能是 UWP 主机控件)中注入一个窗口时,您可以比 xaml 岛更进一步,并在一个窗口中拥有多个进程(实际上是多个)。 -
此外,您能否开发“有一种方法可以在 WPF 中使其平滑,但随后我失去了虚拟化”?
-
最后,您可以在 VS2019 中使用 alt+F2 分析您的应用程序,以查看它在何处/何时变慢以及根本原因是什么(哪些功能)。