Высота WPF во время выполнения - PullRequest
3 голосов
/ 12 мая 2011

Я новичок в WPF. Проблема, которую я пытаюсь решить, - это как получить правильную высоту во время выполнения.

В моем Приложении я динамически добавляю пользовательские элементы управления в панель стека в коде позади. Usercontrol содержит несколько Texblocks. Моя стековая панель затем используется в качестве контента для BookPage, и эта BookPage добавляется в книгу (http://wpfbookcontrol.codeplex.com/). Высота моей стековой панели не должна превышать определенного значения.

Я уже понял, что могу использовать Measure & Arrange для вычисления ActualSize & Height of Usercontrol:

itemsa.Measure(new System.Windows.Size(double.PositiveInfinity,     double.PositiveInfinity));
itemsa.Arrange(new Rect(0, 0, 400, itemsa.DesiredSize.Height));

На этом этапе пользовательский контроль не добавляется в панель стека. 400 - это ширина, которую мой пользовательский контроль не должен превышать, но это так, потому что Textblock не создает автоматических разрывов строк. Когда я показываю Книгу, создаются разрывы строк.

Что я должен сделать, чтобы решить эту проблему?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 12 мая 2011

Почему бы не использовать свойство MaxHeight для панели стека?

Также ActualWidth и ActualHeight сообщат вам фактический размер элемента управления.

Вы уверены, что вам нужны все эти расчеты? Я думаю, что было бы лучше использовать GridRows автоматического определения размера или что-то в этом роде.

0 голосов
/ 12 мая 2011

Для меня это звучит так, будто вы хотите, чтобы пользовательская панель выполняла разметку очень специфическим образом. Вы можете наследовать новый класс от Panel, а затем переопределить MeasureOverride и ArrangeOverride, чтобы определить, что и где можно добавить. Этот метод также используется для создания виртуальной панели, где создаются только видимые дочерние элементы, и они уничтожаются при прокрутке.

Если вы заинтересованы в этом, дайте мне знать, и я отредактирую пост и приведу пример.

0 голосов
/ 12 мая 2011

Не уверен, если вы ищете это, но со свойством MaxHeight у вас есть возможность ограничить рост элемента управления.

В общем, нет необходимости переопределять Measure and Arrange, Layout-System очень мощная и предлагает вам много контейнерных элементов управления , которые обеспечивают определенное поведение макета.

...