Подтвердить что ты не робот

Как у вас есть Silverlight для изменения размера текстового контента?

У меня есть пользовательский элемент управления (ниже), я привязываю текст к источнику данных и создаю кучу пользовательских элементов управления.

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

Есть ли способ сделать это в Silverlight?

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

<Grid x:Name="gdBubble" Width="180" Height="95">
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" />
    <TextBlock x:Name="txtContent" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>

[Я использую сетку здесь, чтобы текстовый блок находился в центре правильно.]

Ответ был описан как Rich, чтобы использовать Viewbox.

Это была выигрышная конфигурация (для меня):

<Grid x:Name="gdBubble" Width="180" Height="95">
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" />
    <controls:Viewbox Margin="10,10,10,10" VerticalAlignment="Stretch" Height="Auto">
        <TextBlock x:Name="txtContent" FontSize="18" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </controls:Viewbox>
</Grid>
4b9b3361

Ответ 1

Вчера был задан аналогичный вопрос о том, как изменить размер контента автоматически относительно размера контейнера. Ответ в этом случае тот же: используйте Viewbox. Если вы поместите свой TextBlock внутри окна просмотра, TextBlock изменит размер, чтобы использовать только пространство, в котором он нуждается, и Viewbox будет обрабатывать растягивание этого размера в контейнере. Используйте атрибут stretch для выбора одного из четырех методов растягивания.

Взгляните на эту тему со вчерашнего дня:

WPF Gui, который меняет размер с помощью окна?

Ответ 2

Попробуйте Dockpanel вместо Grid. Использование LastChildFill = true должно привести к поведению, которое вы ищете.

Ответ 3

Вы изучили преобразование ScaleTransform?

И.Б..