如何在WPF中呈现之前获取标签宽度

时间:2010-07-08 14:05:03

标签: c# wpf user-interface

棘手的人解释这一点。我有一个自定义的属性网格。左侧列具有属性标签。有时取决于属性,我想要一个小的elipsis按钮向用户显示他们可以启动对话框。我希望按钮垂直内嵌,使UI看起来整洁。标签的宽度取决于“onEnterPressed”或“upLink”属性的名称。

如果我单独添加elipses按钮并使用这样的边距......

elipsisButton.Margin = new Thickness(135, 0, 0, 0);

左边的135正是我要放置按钮的位置。

我希望能够做类似

的事情
Label newLabel = new System.Windows.Controls.Label();
newLabel.Content = anInfo;
aPanel.Children.Add(newLabel);
elipsisButton.Margin = new Thickness(135 - newLabel.Width, 0, 0, 0);

然而,看起来,标签在屏幕上呈现之前不会获得宽度,因此我无法找出要添加到我的elipsis按钮的尺寸边距。有什么想法吗?

1 个答案:

答案 0 :(得分:18)

您可以调用Measure()方法,以询问控件需要显示的大小:

var l = new Label() { Content = "Hello" };
l.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

Size s = l.DesiredSize;

然后使用DesiredSize属性的值。