У меня есть панель с несколькими TextBlock
s. Я хочу изменить эту панель таким образом, чтобы размер шрифта каждого TextBlock изменялся в зависимости от размера панели.WPF: Как реализовать панель с регулируемым размером шрифта?
Размер панели может меняться, когда пользователь меняет размер окна (например, максимизирует или восстанавливает его).
Я пытался сделать это с помощью Viewbox
:
<Viewbox Stretch="Fill">
<Grid Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Viewbox}}, Path=Width}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
</Grid>
</Viewbox>
Но это не работает, потому что
- размер шрифта не становится больше, когда размер
Viewbox
увеличивается и - не уменьшается, когда размер
Viewbox
уменьшается.
Как реализовать масштабирование этих текстовых блоков (чтобы они заполнили всю доступную область и адаптировали их размеры шрифта)?
вам нужно масштабировать и против высоты и ширины одновременно делать? –
В идеале - да, но масштабирование только по ширине достаточно. –
У меня была такая же проблема, и в итоге я создал стиль Textbox, привязанный к масштабирующему конвертеру. Но он использовал только ширину. –