как получить ширину надписей перед их отображением в WPF - PullRequest
4 голосов
/ 08 июля 2010

Хитрый, чтобы объяснить это.У меня есть пользовательская сетка свойств.Левый столбец имеет метки свойств.Иногда, в зависимости от свойства, я хочу, чтобы маленькая кнопка элипсиса показывала пользователю, что он может запустить диалог.Я хочу, чтобы кнопки были расположены вертикально, чтобы интерфейс выглядел аккуратно.Метки различаются по ширине в зависимости от имени свойства "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 Ответ

18 голосов
/ 08 июля 2010

Вы можете вызвать метод Measure (), чтобы задать элементу управления необходимый размер для отображения:

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

Size s = l.DesiredSize;

И затем использовать значение свойства DesiredSize.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...