2009-07-17 3 views
1

WPF 창에서 눈금이 있고 첫 번째 열에 레이블이 들어 있습니다. 레이블에 SkewTransform을 적용했습니다. 내가 열 너비를 줄이면 레이블이 절반내 레이블의 절반 만 표시되는 이유는 무엇입니까? [WPF]

Screenshot

나는 그것이 Prashant을 표시 할 것으로 예상하고있어

alt text http://freephotoupload.net/images/673_Lable.jpg

에게 표시되는 내 주요 목표는 라벨 옆에 여분의 공백을 줄이는 것입니다

XAML 코드

<Grid ShowGridLines="True"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="146.334" /> 
       <ColumnDefinition Width="94.666" /> 
      </Grid.ColumnDefinitions> 
      <Label Margin="0" VerticalAlignment="Center" Width="Auto" Name="label1" RenderTransformOrigin="0.5,0.5" Content="Prashant"> 
       <Label.RenderTransform> 
        <TransformGroup> 
         <ScaleTransform ScaleX="1" ScaleY="1"/> 
         <SkewTransform AngleX="0" AngleY="0"/> 
         <RotateTransform Angle="-90"/> 
         <TranslateTransform X="0" Y="0"/> 
        </TransformGroup> 
       </Label.RenderTransform> 
    </Label> 
</Grid> 

제안하십시오 ....

+0

당신이 "사용자 정의"네임 스페이스 무엇입니까? 너는 보통의 Transgorm을 사용하지 않는 것처럼 보인다. GreenReign이 말하듯이 LayOutTransform을 사용하여 문제를 해결합니다. –

+0

그래,'Custom :'네임 스페이스 항목을 삭제 한 다음 위 코드가 설명한대로 작동합니다. – exclsr

+0

Blend에서 디자인 했으므로 자동으로 추가되었습니다. –

답변

2

RenderTransform 대신 LayoutTransform을 입력하십시오.

WPF에서는 컨트롤을 배치 한 후에 컨트롤에 대해 RenderTransforms이 수행됩니다.

귀하의 경우 Label은 먼저 열 폭만큼 짧게 절단됩니다. 그런 다음 RenderTransform이 적용됩니다 (회전 만이 아무 것도 수행하지 않습니다). 결과적으로 이상한 모양의 Label이 발생합니다.

LayoutTransform은 컨트롤이 배치되기 전에 수행됩니다. 이처럼

:

<Grid ShowGridLines="True"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="146.334" /> 
     <ColumnDefinition Width="94.666" /> 
    </Grid.ColumnDefinitions> 
    <Label 
     Name="label1" 
     Content="Prashant" 
     Margin="0" 
     Width="Auto" 
     VerticalAlignment="Center" 
     RenderTransformOrigin="0.5,0.5"> 
     <Label.LayoutTransform> 
      <TransformGroup> 
       <ScaleTransform ScaleX="1" ScaleY="1"/> 
       <SkewTransform AngleX="0" AngleY="0"/> 
       <RotateTransform Angle="-90"/> 
       <TranslateTransform X="0" Y="0"/> 
      </TransformGroup> 
     </Label.LayoutTransform> 
    </Label> 
</Grid>