Ответ 1
Оберните TextBlock
внутри a ViewBox
:
<Grid>
<Viewbox>
<TextBlock TextWrapping="Wrap" Text="Some Text" />
</Viewbox>
</Grid>
У меня есть текст, который отображается во время выполнения в текстовом блоке. я хочу размер шрифта должен быть самым большим, чтобы заполнить область, которая данный. Я думаю, что у меня правильно настроен текстовый блок, чтобы "авторизовать" и Я пытаюсь увеличить размер шрифта до тех пор, пока текстовый блок больше, чем его родитель затем уменьшает размер шрифта на 1. Проблема заключается в том, что я не могу получить управление, чтобы перерисовать/пересчитать его размер.
Это лучший способ сделать это? Или есть способ, которым я могу заставить мой метод работать?
Оберните TextBlock
внутри a ViewBox
:
<Grid>
<Viewbox>
<TextBlock TextWrapping="Wrap" Text="Some Text" />
</Viewbox>
</Grid>
У меня была та же проблема. Вы можете использовать это для изменить размер fontsize текстового блока , чтобы заполнить область, когда она имеет переполнение.. p >
<Viewbox StretchDirection="DownOnly" Stretch="Uniform">
<TextBlock Text="{Binding Path=Title}" HorizontalAlignment="Center"/>
</Viewbox>
Я нашел отличный способ сделать это, используя ViewBox
:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Viewbox Grid.Row="0" Grid.Column="0" Stretch="Uniform">
<TextBlock Name="tbTest" Background="Yellow" Text="This is some text" />
</Viewbox>
<ContentControl Grid.Column="0" Grid.Row="2">
<TextBlock>This is some text</TextBlock>
</ContentControl>
</Grid>
Элемент управления WPF ViewBox
может увеличиваться/уменьшаться с его содержимым до доступного пространства.
Просто поместите свой TextBlock
в ViewBox
как:
<Viewbox Stretch="Uniform" Width="50" Height="50">
<TextBlock Text="Test" />
</Viewbox>
ViewBox
обычно масштабируется его контейнером.
Ну, это не "идеальный" ответ, но это быстрый взлом (вы можете отказаться от этого в kaxaml и проверить его):
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Height="300" Background="green">
<Viewbox>
<TextBlock Background="red" Text="Hurr"/>
</Viewbox>
</Grid>
</Page>
ViewBox
увеличит любой контент, чтобы заполнить его контейнер. Проблема в том, что TextBlock
, в то время как он имеет размер по своему тексту, имеет прописку сверху и снизу, от которой вы не можете избавиться (без особого подъема). Это может приблизиться к тому, что вы хотите, т. К.
Чтобы обеспечить упаковку, вам необходимо установить MaxWidth
и/или MaxHeight
в TextBlock
<Viewbox StretchDirection="DownOnly" Stretch="Uniform">
<TextBlock MaxWidth="500" TextWrapping="Wrap" FontSize="30" VerticalAlignment="Center"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."/>