【问题标题】:Open a Popup from a Scrollviewer从 Scrollviewer 打开一个弹出窗口
【发布时间】:2013-12-04 16:54:35
【问题描述】:

我正在使用 XAML 制作一个 WinRT 应用程序,并且我有一个控件,该控件具有一个 TextBox 和一个在 TextBox 获得焦点时在其下打开的 Popup。 弹出窗口的宽度与文本框的宽度相同。这很好用,但是如果我将控件放在 ScrollViewer 中并放大弹出窗口的大小不会改变。我想实现类似于标准 ComboBox 的东西,当它嵌套在 ScrollViewer 中时,它会改变其 Popup 的大小。我该怎么办?

我知道弹出窗口必须是 VisualTree 的一部分,但我不太确定如何在不更改现有布局的情况下添加它。 谢谢

【问题讨论】:

  • 弹出窗口的父级是什么?

标签: c# xaml popup windows-runtime scrollview


【解决方案1】:

要让弹出窗口在TextBox 中作为父项,您可以修改TextBox 的模板并将其放入其中(您可以将TextBox 子类化以添加对下拉逻辑的支持并更改默认模板同时)或简单地使用VisualTreeHelper 找到TextBox 的根Grid。默认情况下,TextBox 在其根目录下有一个Grid,因此您可以获取它并将Popup 添加到其Children

【讨论】:

  • 您好,感谢您的回答。
  • 我的弹出窗口的父级是一个网格。 TextBox 和 Popup 在同一个 Grid 中。这里的问题是,当我打开 Popup 时,它会被 Grid 的大小裁剪。在这种情况下,我应该在打开弹出窗口时更改它的父级吗?
  • 好的,我发现了问题。当弹出窗口具有固定的宽度和高度时,它会被包含的 Grid 裁剪。我删除了固定大小,现在它可以正常工作了。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多