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

StackOverflow https://stackoverflow.com/questions/734809

Вопрос

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

Я хочу, чтобы размер текста был максимально возможным, чтобы он мог уместиться в пределах элемента управления.В программировании для 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>

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

Ответ был таким, как описал Рич, — использовать 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>
Это было полезно?

Решение

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

Посмотрите вчерашнюю тему:

WPF Gui, который меняет размер вместе с окном?

Другие советы

Попробуйте Док-панель вместо сетки.Использование LastChildFill=true должно обеспечить желаемое поведение.

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

там же

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top