Я заметил, что когда я меняю высоту элемента управления TextBox в WinUI 3 XAML, меняется общая высота элемента управления (а не только область ввода), и он обрезает нижнюю часть области ввода, если я сделаю высоту меньше примерно 56, если есть заголовок. Например:
<TextBox
x:Name = "MyTextBox"
Height = "45"
Width = "Stretch"
Header = "A Text Box" />
Есть ли способ обойти это? Легко сделать текстовое поле выше, но я хочу, чтобы область ввода была короче, чем по умолчанию.





В DefaultTextBoxStyle,
MinHeight установлено на TextControlThemeMinHeight (по умолчанию: 32)Padding установлено на TextControlThemePadding (по умолчанию: 10,5,6,6)Попробуйте установить MinHeight и Padding на 0:
<TextBox
x:Name = "MyTextBox"
Height = "45"
MinHeight = "0"
Padding = "0"
Header = "A Text Box"
Text = "ABCDE" />
Если вы не знакомы с DefaultTextBoxStyle, проверьте файл generic.xaml.
Когда отображается полная высота TexBox, у нижнего края области ввода появляется небольшая черная рамка. Приведенное выше решение позволяет тексту в области ввода занимать меньше места, но не уменьшает высоту области ввода текста.
Ты прав. В дополнение к Padding, установка MinHeigh на 0 должна помочь.
Он по-прежнему просто обрезает нижнюю часть области ввода, из-за чего она выглядит несовместимой с другими текстовыми полями, имеющими черную рамку внизу.
Я добавил изображение в свой ответ. С вашей стороны все по-другому?
Странный. Я добавил ваше текстовое поле XAML в свой проект, и это сработало. Потом тот, с которым я начал работать. У меня нет объяснений. Принят ответ.
Вы можете изменить высоту заголовка или области ввода, найдя их с помощью
VisualTreeHelper. См. также stackoverflow.com/questions/78405137/…