В настоящее время я создаю класс, который наследуется от класса Popup
.
Наконец, он будет использоваться для отображения пользователю всплывающего окна с правилами проверки при редактировании, например, TextBox
.
Поэтому я создал ValidationPopup с этим конструктором:
public ValidationPopup(UIElement parent, double width) : base()
{
this.parent = parent;
this.width = width;
InitControl();
}
Я хотел бы установить размер всплывающего окна равным размеру родителя PlacementTarget. Чтобы позволить многим различным элементам управления иметь один из этих ValidationPopups, я передаю UIElement
в качестве родителя вместо TextBox
и т. д. Моя проблема в том, что мне нужно передать значения ширины и высоты этого элемента управления при создании экземпляра ValidationPopup в для того, чтобы размер его правильно.
Можно ли получить эти значения от UIElement
? Я видел RenderSize в MSDN, но он дает мне только значения 0,0 для ширины и высоты.
Здесь я устанавливаю один экземпляр ValidationPopup:
txtOperator = new TextBox();
layoutGrid.Children.Add(txtOperator);
operatorVPU = new ValidationPopup(txtOperator, txtOperator.Width);
Я пытался использовать RenderSize, но это не работает, пока весь пользовательский интерфейс не будет полностью завершен.
Есть ли способ получить значения высоты и ширины UIElement на данный момент? Возможно, есть другие, еще лучшие способы достижения того же результата?