2010-12-23 4 views
3

기본 Button 템플릿의 ContentPresenter를 TextBlock로 바꾸므로 너무 길 때 텍스트를자를 수 있습니다.Silverlight : 텍스트 자르기가 적용된 단추 템플릿

WPF에서 제대로 작동합니다. 오른쪽에 공간이 때에도, 실버의 텍스트가 하나의 가장자리로 밀어됩니다 왼쪽에 잘라 :

  <Border x:Name="bdrBackground" 
      BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}" 
      Background="{TemplateBinding Background}" /> 

     <Rectangle x:Name="rectMouseOverVisualElement" 
      Opacity="0"> 
      <Rectangle.Fill> 
       <SolidColorBrush x:Name="rectMouseOverColor" 
        Color="{StaticResource MouseOverItemBgColor}"/> 
      </Rectangle.Fill> 
     </Rectangle> 
     <Rectangle x:Name="rectPressedVisualElement" 
      Opacity="0" 
      Style="{TemplateBinding Tag}"/> 

     <TextBlock x:Name="textblock" 
      Text="{TemplateBinding Content}" 
      TextTrimming="WordEllipsis" 
      TextWrapping="NoWrap" 
      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
      Margin="{TemplateBinding Padding}" 
      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 


     <Rectangle x:Name="rectDisabledVisualElement" 
      Opacity="0" 
      Style="{StaticResource RectangleDisabledStyle}"/> 

     <Rectangle x:Name="rectFocusVisualElement" 
      Opacity="0" 
      Style="{StaticResource RectangleFocusStyle}"/>    

    </Grid> 
</ControlTemplate> 
:

alt text

템플릿은 특별한 아무것도 아니다, 그냥 TextBlock을 가진 ContentPresenter에 교체

어떻게 해결할 수 있습니까?


상세 정보 : HorizontalAlignment로에 대한 최신 의견으로는, 그것은 TextTrimming의 SL의 구현은 WPF의 차이가 분명하다. SL에서는 TextTrimming이 텍스트가 왼쪽으로 정렬 된 경우에만 실제로 작동합니다. SL은 WPF와 같은 방식으로 텍스트를 정렬 할만큼 똑똑하지 않습니다.

WPF 버튼 : 된 본체의 HorizontalAlignment로 = 센터

alt text

SL 버튼 :

alt text = 왼쪽 된 본체의 HorizontalAlignment로와

alt text

SL 버튼 예를 들어

+1

우리가 당신을 도울 수 있도록 템플릿의 xaml을 제공하십시오 :) – danbord

답변

3

. TextBlock의 TextAlignment = Center를 설정합니다. WPF에서와 똑같이 작동합니다. 도와 주셔서 감사합니다!

2

문제는 HorizontalContentAlignment이 "센터"로 설정되어있는 것입니다. 정말 WordEllipsis는 TextBlock의 HorizontalAlignment가 "Left"로 설정된 경우에만 의미가 있습니다.

편집

원하는 동작이 시도 방법 : - 더 간단한 해결책이있다

<Border HorizontalAlignment="Center" 
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 
    <TextBlock x:Name="textblock" 
     Text="{TemplateBinding Content}" 
     TextTrimming="WordEllipsis" 
     TextWrapping="NoWrap" 
     Margin="{TemplateBinding Padding}" /> 
</Border> 
+0

이 방법은 효과적이지만 모든 버튼 텍스트가 왼쪽으로 치우치게됩니다. WPF에서 텍스트가 중앙에오고 너무 길면 트리밍되는 효과를 어떻게 얻을 수 있습니까? – dex3703

+0

@ dex3703 : 내 편집 참조 – AnthonyWJones

관련 문제