c# - 获取 UIElement 的高度和宽度?

标签 c# wpf height width uielement

我目前创建了一个继承自 Popup 的类。

最后,它将用于在编辑例如 TextBox 时向用户显示带有验证规则的弹出窗口。

因此,到目前为止,我使用这个构造函数创建了 ValidationPopup:

public ValidationPopup(UIElement parent, double width) : base()
{
   this.parent = parent;
   this.width = width;
   InitControl();
}

我想将弹出窗口的大小设置为等于 PlacementTarget 父级的大小。 为了让许多不同的控件能够拥有这些 ValidationPopups 之一,我传递了一个 UIElement 作为父级而不是 TextBox 等。 我的问题是,在构建 ValidationPopup 实例时,我必须传递此控件的宽度和高度值才能正确调整其大小。

是否可以从 UIElement 获取这些值? 我在 MSDN 上看到了 RenderSize,但它只为我提供了 0.0 的宽度和高度值。

这是我设置一个 ValidationPopup 实例的地方:

txtOperator = new TextBox();
layoutGrid.Children.Add(txtOperator);
operatorVPU = new ValidationPopup(txtOperator, txtOperator.Width);

我尝试使用 RenderSize,但是在整个 UI 完全完成之前这不起作用。

此时是否有办法获取 UIElement 的 Height 和 Width 值? 是否有其他更好的方法可以达到相同的结果?

最佳答案

听起来您需要使用 ActualWidth/Height 属性。如果它们仍然是 0 或 NaN,您可以尝试在 View 创建的稍后部分执行此代码。

关于c# - 获取 UIElement 的高度和宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987814/

相关文章:

wpf - 为每个字符串生成特定的颜色?

javascript - 在javascript中计算精确的字符\字符串高度

c# - 使用 Polly 重试之前检查响应的字符串内容

c# - 从 WPF 中的一个 UserControl 中的 PropertyChanged 命令更新其他 ViewModel 和容器表单

WPF: System.ArgumentException => {"' {0 }' is not a Visual or Visual3D."}

jquery - 如何设置 jquery 选项卡形成 100% 高度?

html - 如何使 div 占据没有固定 TD 高度的 html 表格单元格高度的 100%?

c# - Class B 继承自 ClassA 时,如何将 List<Class> 转换为 List<Class>?

c# - 我怎样才能更有效地进行int模式检查?

c# - 如何在 WinForms 的 ComboBox 中居中对齐所选项目?