0

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

我试过的:

我尝试为自定义文本框创建一个用户控件,其中 Canvas 作为其父级。像这样:

<Canvas>
  <TextBox/>
</Canvas

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

如何将列表视图项内的文本框带到 UI 的“前面”?

4

1 回答 1

1

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

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

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

这就是我想我会采取的方法。

于 2020-05-24T04:03:20.277 回答