Как получить размер видимой части пользовательского элемента управления WPF? - PullRequest
3 голосов
/ 24 мая 2011

У меня есть пользовательский контроль, который состоит из метки и текстового поля.Он внутри прокрутки просмотра.

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

На изображении ниже зелёный прямоугольник является украшением.Как вы видите, он рисуется над полосой прокрутки с правой стороны.

Можно ли получить размер отрендеренной детали или мне придется вручную пройти по визуальному дереву и рассчитать его?

edit: дополнительная справочная информация

Я создаю очень ограниченный дизайнер форм.Все происходит в коде.Adorner используется для отображения текущего выбранного элемента управления.

sample

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Я бы поместил Canvas в ScrollViewer и поместил бы все ваши пользовательские элементы управления на Canvas.Если после этого Adorner будет рисоваться на холсте, вам не нужно беспокоиться о том, что он зарисовывает поверх вашего ScrollViewer.

У вас также будет дополнительное преимущество исчезновения украшателя под ScrollViewer, а не просто в концеэто, так что ваши пользователи знают, что элемент управления выходит за пределы ScrollViewer.Так работают все дизайнеры, которых я создал и сделал в WPF.

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

Если вас беспокоит только отсечение рекламодателя, вы можете включить в свой контент AdornerDecorator . Что-то вроде:

<ScrollViewer>
    <AdornerDecorator>
        <!-- Your content here -->
    </AdornerDecorator>
</ScrollViewer>

Или вы можете включить AdornerDecorator непосредственно в свой UserControl.

...