如何将列表视图项中的元素带到整个应用程序的前面?

How to bring an element inside a list view item to the front of the entire app?

使用 UWP XAML,我正在尝试从 Postman 重新创建此文本框 UX,它会弹出到应用程序中所有其他元素之上以显示全文:https://streamable.com/avrixo。我几乎完全重新创建了这个 UX,但是当文本框位于列表视图中时,我无法将文本框带到应用程序的 "front"。

我试过的:

我已经尝试为自定义文本框创建一个 UserControl,并将 Canvas 作为其父项。像这样:

<Canvas>
  <TextBox/>
</Canvas

我添加了一些事件处理来更改文本换行和 Canvas.Zindex 附加 属性 当用户关注文本框时(我尝试将 z-index 设置为 1, 10、100 和 1000000)。但是,我发现当文本框垂直扩展时,无论我给它什么 z-index,它仍然是 "behind" 下面的列表视图项。

如何将列表视图项中的文本框添加到 UI 的 "front"?

在这种情况下,我认为您的问题不在于 z-index(按说法)。 ListView 中的问题是每个 ListViewItem 都有自己的边界,因此 TextBox 被项目的边界框剪裁。您至少可以使用 Visual Tree 工具仔细检查边界区域以确认问题所在。

如果您不希望 ListViewItem 扩展大小以匹配,我可以看到两个选项。当用户单击编辑时,您将 'fake' 文本框(绑定到 ListView 或数据项中的原始文本框)放在 1) 您显示的弹出窗口或 2) 作为您的一部分的叠加层中包含文本框的 XAML 页面。

您可以从原始文本框中抓取选择状态和光标位置等,并将焦点移动到新的文本框并镜像相同的状态。

这就是我认为我会采用的方法。