Немасштабированный контроль в масштабированных родителях

У меня есть WPF UserControl, который действует как Viewport (я называю его "viewport" в следующем контексте). Этот видовой экран может масштабировать и панорамировать его содержимое (я думаю, что при масштабировании используется либо Layout-, либо RenderTransform для масштабирования содержимого). По сути, это просто холст. Этот холст содержит некоторые фигуры и некоторые текстовые поля, которые используются для отображения метаданных фигур. Если коэффициент масштабирования равен 1, все в порядке, но если я уменьшу, холст сжимается, а также текстовые поля, что приводит к невозможности чтения метаданных, поскольку текст очень маленький.

Как я могу заставить TextBoxes противодействовать увеличению, чтобы они не меняли размер экрана?

Я думал о том, чтобы передать Transform области просмотра (которая вызывает масштабирование) в TextBoxes (каким-то образом) и применить его инверсию к ним, но мне это кажется неправильным. Другой подход - использовать Adorner, который содержит TextBoxes. Я нашел тему об Adorners с элементами управления здесь, на Stackru, но я не уверен, что этот подход лучше, чем другие.

Так что, если бы кто-то нашел лучшее решение, я был бы признателен.

заранее спасибо

1 ответ

Существует свойство Transform.Inverse, которое вы можете использовать для "отмены" преобразования вашего родительского элемента управления. Таким образом, вы в основном связываете свой родительский элемент управления с MyTransform, а все дочерние элементы управления с MyTransform.Inverse. Таким образом, трансформация применяется к положению детей, а не к их размеру.

Я согласен, что это "неправильно", но я уверен, что это ваш лучший вариант.

Другие вопросы по тегам