2013-09-30 2 views
0

이 예제를 강조하기 위해 사용하는 샘플 응용 프로그램이 있습니다.변환시 버튼 내용이 잘림

본질적으로 내용이 너무 커서 버튼에 맞지 않을 경우 콘텐츠를 자동으로 스크롤하는 버튼 (이 경우 텍스트)을 만들고 싶습니다. 이 코드에 도시 ​​된 바와 같이이를 달성하기 위해, I는 TranslateTransform 애니메이션 스토리 보드를 사용 후 용기에 맞게 너무 큰 콘텐츠 요소를 추가하려고 노력하고 있어요 :

<Button VerticalAlignment="Center" HorizontalAlignment="Center" Width="75"> 
     <TextBlock HorizontalAlignment="Left" Text="LOTS OF TEXT IN A LONG STRING"> 
      <TextBlock.RenderTransform> 
       <TranslateTransform x:Name="MyTransform"/> 
      </TextBlock.RenderTransform> 
      <TextBlock.Triggers> 
       <EventTrigger RoutedEvent="Window.Loaded"> 
        <BeginStoryboard> 
         <Storyboard RepeatBehavior="Forever"> 
          <DoubleAnimation From="0" To="-180" Storyboard.TargetName="MyTransform" Storyboard.TargetProperty="X" Duration="0:0:5"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </TextBlock.Triggers> 
     </TextBlock> 
    </Button> 

당신이 실행하는 경우 빈 프로젝트라면 첫 번째 3 단어 만 스크롤되고 다른 텍스트는 누락 된 것을 볼 수 있습니다. 또한 요소 외부의 텍스트를 볼 수 있으며 부모 컨테이너 경계를 벗어날 때 숨겨지지 않습니다.

나머지 텍스트를 표시하고 부모 컨테이너의 경계에 있지 않은 텍스트를 숨기려면 어떻게해야합니까?

답변

3

RenderTransform의 시간에는 이미 내용이 잘립니다. 즉, 부모가 잘라내 지 않은 전체 크기 TextBlock이 필요합니다. 그래서 나는 클리핑을하지 않고 위치를 지정할 수있는 Canvas을 삽입했습니다. Button 외부의 텍스트를 방지하려면 ClipToBounds을 true로 설정하십시오.

<Button Width="75" Height="25" ClipToBounds="True"> 
    <Canvas> 
     <TextBlock Canvas.Top="-7" Canvas.Left="0" Text="LOTS OF TEXT IN A LONG STRING"> 
      <TextBlock.Triggers> 
       <EventTrigger RoutedEvent="Window.Loaded"> 
        <BeginStoryboard> 
         <Storyboard RepeatBehavior="Forever"> 
          <DoubleAnimation From="50" To="-200" Storyboard.TargetProperty="(Canvas.Left)" Duration="0:0:5"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </TextBlock.Triggers> 
     </TextBlock>     
    </Canvas> 
</Button> 

그러나이 솔루션은하지 않습니다 "자동으로 스크롤 내용이 버튼에 맞게 너무 큰 내용". 심지어 레이아웃 시스템이 손상되고 (콘텐츠 크기가없고 정렬이 없음) TextBlock을 수동으로 배치하고 문자 길이에 따라 DoubleAnimation 값을 조정해야합니다. 이 작업을 실제로 자동으로 쉽고 사용하기 쉽도록 만들려면 두려운 XAML 이상의 라인이 필요합니다.

+0

답변 해 주셔서 감사합니다. 내 솔루션에 부정적인 영향을주지 않고 언급 한 단점을 해결할 수 있다고 생각합니다. – CamronBute