Как установить FontSize для текстового блока, который находится в окне просмотра - PullRequest
0 голосов
/ 15 января 2010

Я не могу установить FontSize из Text в TextBlock, так как TextBox в Viewbox. Почему?

<Grid Margin="35,30,35,0" ShowGridLines="False" >
    <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="270 px" Width="2*"/>
        <ColumnDefinition Width="5*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition  />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Border Grid.Row="0" Grid.Column="0" BorderBrush="Black" BorderThickness="1,1,1,0" />
    <Viewbox>
        <TextBlock  Margin="10,5,0,5" Grid.Row="0" Grid.Column="0">Team:</TextBlock>
    </Viewbox>
    <Border Grid.Row="1" Grid.Column="0" BorderBrush="Black" BorderThickness="1,1,1,0" />
    <TextBlock Margin="10,5,0,5" Grid.Row="1" Grid.Column="0">Beschreibung:</TextBlock>
    <Border Grid.Row="2" Grid.Column="0" BorderBrush="Black" BorderThickness="1,1,1,0" />
    <TextBlock Margin="10,5,0,5" Grid.Row="2" Grid.Column="0">Milestone:</TextBlock>
    <Border Grid.Row="3" Grid.Column="0" BorderBrush="Black" BorderThickness="1,1,1,1" />
    <TextBlock Margin="10,5,0,5" Grid.Row="3" Grid.Column="0">Status:</TextBlock>
    <Border Grid.Row="0" Grid.Column="1" BorderBrush="Black" BorderThickness="0,1,1,0" />
    <TextBlock x:Name="tb_Team_dyn" Margin="10,5,0,5"  Grid.Row="0" Grid.Column="1"
               FontWeight="Bold" Text="{Binding Data.Team}" TextWrapping="Wrap"></TextBlock>
    <Border Grid.Row="1" Grid.Column="1" BorderBrush="Black" BorderThickness="0,1,1,0" />
    <TextBlock x:Name="tb_Descr_dyn" Margin="10,5,0,5" Grid.Row="1" Grid.Column="1"
               FontWeight="Bold" Text="{Binding Data.Description}" TextWrapping="Wrap"/>
    <Border Grid.Row="2" Grid.Column="1" BorderBrush="Black" BorderThickness="0,1,1,0" />
    <TextBlock x:Name="tb_Milestone_dyn" Margin="10,5,0,5" Grid.Row="2" Grid.Column="1"
               FontWeight="Bold" Text="{Binding Data.Milestone}" TextWrapping="Wrap"/>
    <Border Grid.Row="3" Grid.Column="1" BorderBrush="Black" BorderThickness="0,1,1,1" />
    <StackPanel Margin="10,5,0,5" Grid.Row="3" Grid.Column="1" Orientation="Horizontal">
        <Image  x:Name="imgSmile" MaxWidth="38" Source="{Binding Data.Smiley}" />
        <TextBlock x:Name="tb_Status_dyn" Margin="{Binding Data.SmileyMargin}"
                   Foreground="{Binding Data.Col}" FontWeight="Bold"
                   Text="{Binding Data.Status}" TextWrapping="Wrap"></TextBlock>
    </StackPanel>
</Grid>

Я могу установить FontSize с всех TextBlock с, но не TextBlock, который находится в Viewbox.

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Имейте в виду, что FontSize устанавливает фактический размер текста, но Viewbox затем масштабирует его после того, как текст выложен и визуализирован.Вы увидите тот же эффект, если поместите элемент с фиксированной шириной и высотой в окно просмотра.Viewbox не меняет сами свойства Width, Height или FontSize, но окончательный рендеринг выглядит иначе.

На самом деле вам нужен исходный макет самого Viewbox, который сделает его начальный размер равнымк TextBlock, который эффективно установит масштабирование Viewbox на 1: 1.Это может быть достигнуто несколькими способами в зависимости от вашего приложения (непосредственно в коде, привязках с ValueConverters и т. Д.), Но основным методом будет измерение начального размера родительского элемента и установка соответствующих полей для уменьшения окна просмотра в пределах окна просмотра.область расположения, назначенная ему.Это позволит затем Viewbox изменять размер вместе с его родителем, поскольку он поддерживает установленные поля.Также посмотрите на StretchDirection, MinHeight и MinWidth в окне просмотра.

1 голос
/ 15 января 2010

Некоторый пример кода будет полезен. Вне моей головы ... текстовое поле установлено на многострочное? Если нет, то внутренний текст, вероятно, растянется вместе с текстовым полем.

...