2010-07-08 116 views
4

棘手的一个来解释这一点。我有一个自定义的属性网格。左栏有财产标签。有时候取决于属性,我想要一个小小的elipsis按钮来向用户显示他们可以启动对话框。我希望按钮垂直内联以使界面看起来整洁。例如,标签宽度根据属性“onEnterPressed”或“upLink”的名称而有所不同。如何在WPF中呈现标签宽度之前获取标签宽度

如果我单独加省略号按钮,使用保证金是这样的...

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按钮。有任何想法吗?

回答

16

可以调用measure()方法,以问要显示它所需要的尺寸控制:

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

Size s = l.DesiredSize; 

然后使用DesiredSize属性的值。

+1

那会做驴子,...会做 – DrLazer 2010-07-08 14:39:56

+0

这太棒了!只需添加:DesiredSize包含边距。起初让我困惑。 – broen 2016-08-25 07:54:40