2012-08-03 8 views
4

나는 임베디드 윈도우 용 Silverlight에서 작업 중이고 그림에 보이는 것처럼 TextBlock에 텍스트를 맞추고 싶습니다. 텍스트에 맞게 textBlock을 원합니다 (첨부 된 그림에서 yelow 공간을 제거하고 싶습니다)TextBlock 크기를 텍스트 크기에 맞추는 방법

Pic

사람이 나를 도와 드릴까요? >

pic2 -을

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
x:Class="FullTest.PUIsocUI" 
d:DesignWidth="480" d:DesignHeight="272"> 

<Grid x:Name="LayoutRoot" Background="White"> 
    <StackPanel Orientation="Horizontal"  VerticalAlignment="Bottom" Height="64" Grid.Row="1"> 
     <RadioButton x:Name="PowerMeasurement"  GroupName="PowerTabControls" IsChecked="True" Checked="PowerMeasurement_Checked" Unchecked="PowerMeasurement_Unchecked" Content="POWER" BorderThickness="0"/> 
     <RadioButton x:Name="PowerMode"    GroupName="PowerTabControls" Checked="PowerMode_Checked" Unchecked="PowerMode_Unchecked"/>  
     <RadioButton x:Name="PowerLimit"   GroupName="PowerTabControls" IsChecked="False" Click="PowerLimit_Click" Checked="PowerLimit_Checked" Unchecked="PowerLimit_Unchecked"/>  
    </StackPanel> 
    <Grid> 
     <Grid x:Name="PowerMeasurementPage" Margin="0,0,0,64" > 
     <!-- tab page za meritev--> 
      <TextBlock Text="POWER" Style="{StaticResource FunctionNameTextBlockStyle}" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
      <TextBlock Text="11.555" Style="{StaticResource ResultNameTextBlockStyle}" /> 
     </Grid> 
     <Grid x:Name="PowerModePage" Margin="0,0,0,64"> 
     <!-- tab page za Mode--> 
     </Grid> 
     <Grid x:Name="PowerLimitPage" Margin="0,0,0,64"> 
     <!-- tab page za Limita--> 
     </Grid> 
    </Grid> 
</Grid> 

<Style TargetType="TextBlock" x:Key="FunctionNameTextBlockStyle"> 
     <Setter Property="FontFamily" Value="ALTERNATE_GOTHIC#AlternateGothic2 BT"/> 
     <Setter Property="FontSize" Value="44"/> 
     <Setter Property="Margin" Value="57,27,0,0"/> 
    </Style> 

이 내가 얻고 싶은 것입니다 :

안부, 루카 여기

내가 현재 사용하고있는 XAML입니다

+2

텍스트 항목의 정렬을 쉽게하기위한 목적입니까? 그렇다면 네거티브 상단 여백을 사용하십시오. 문제는 텍스트 블록이 글꼴 자체에 정의 된 패딩을 사용하여 TextBlock의 크기를 결정한다는 점입니다. –

+0

네, 그게 내가 원하는대로, 쉽게 aligment 확인하십시오 :) –

+0

TextBlock 자체에서 여백을 사용하여 원하는 효과를 얻을 수 있지만 스타일 설정자의 음수 여백 효과가없는 것 같습니다. –

답변

0

다른 방법은 훨씬 간단합니다. TextBlock의 크기를 조정하면 텍스트를 기반으로 정렬됩니다. 아마도 컨테이너를 들여다보아야 할 것입니다 (아마도 코드를 붙여 넣을 것입니까?). 이 같은 TextBlock을 설정하십시오 :

<TextBlock Text="POWER" HorizontalAlignment="Center" VerticalAlignment="Center" /> 

UPDATE 모습을 VS로, 나에게 단지 글꼴 예약 된 공간 인 것 같다. 당신이 그것을 어떻게 피할 수 있는지 잘 모릅니다.

+0

안녕하십니까, 저는 임베디드 시스템에 실버 라이트를 사용하고 있습니다. 뷰 박스를 지원하지 않습니다. –

+0

핵심 포인트는 * "텍스트에 맞게 텍스트 블록을 원합니다"* 다른 방법은 아닙니다. –

+0

@HiTechMagic, 업데이트 – Snowbear

1
<TextBlock Text="POWER" FontSize="44" FontWeight="SemiBold" RenderTransformOrigin="0.5,0.5"> 
    <TextBlock.RenderTransform> 
    <CompositeTransform ScaleY="2"/> 
    </TextBlock.RenderTransform> 
</TextBlock> 

예제에서 제공 한 ScaleY 선언을 참조하십시오. 이 값을 사용자의 필요에 맞게 조정하십시오. 이것이 ViewBox를 사용하지 않고도 그 효과를 얻을 수있는 한 가지 방법입니다. 또 다른 방법은 해당 TextBlock을 Path로 변환하고 필요에 따라 조정하는 것일 수도 있지만 유용 할 수 있도록 정적 레이블이어야합니다.

희망이 도움이됩니다. :)

+0

+1 : 매우 창의적인 솔루션입니다. 글꼴 크기를 조정해야하지만 글꼴 패딩 문제를 피할 수 있습니다. 좋은. –

+0

@HiTech Magic - 고마워. 가끔은 가지고있는 것들을 가지고 레모네이드를 만들어야 해. :) –

+0

이것은 WP 나 silightight 4,5에 대한 해결책이 될 수 있지만 임베디드 윈도우 용 실버 라이트 용은 아니며 그것이 내가 필요한 것입니다. –

0

VS2015에서는 TextLineBounds 속성을 사용하여 쉽게이 작업을 수행 할 수 있습니다 (귀하의 경우에는 '꽉'으로 설정). 나는 그것을 UAP에서 사용한다. Silverlight에서 사용할 수 있는지 확신 할 수 없다. 그러나 여기에 게시 된 g, q 등의 소문자는 잘립니다. TextLineBounds snipping bottom of letters

관련 문제