2009-07-10 5 views
1

Silverlight 인터페이스에서 컨테이너의 크기가 조정될 때 스택 패널의 크기를 조정하여 텍스트가 잘리지 않도록해야합니다. 문제의 텍스트는 사용자가 선택한 언어에 따라 언어 파일에서 런타임에 추가됩니다. 문자열의 길이가 언어마다 상당히 다를 수 있으므로이 방법에 가장 근접한 방법을 잘 모르겠다. 이것이 그 모양입니다.동적 텍스트로 XAML의 크기를 조정하는 가장 좋은 방법

alt text

문제의 스택 패널은 컬러 블록 및 운전 라벨, 액티브 일, 가용성 및 브레이크는 길이가 변경할 수있는 문자열입니다. XAML은 현재 다음과 같습니다.

<StackPanel x:Name="StatusTotals" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,5,0,5"> 
    <Border x:Name="DrivingBorder" Background="#80FF0000" BorderBrush="Black" BorderThickness="1" Opacity="1" CornerRadius="5,0,0,5" Margin="0,0,-1,0"> 
    <StackPanel Orientation="Vertical" Margin="5,1" VerticalAlignment="Center"> 
     <TextBlock Text="Driving" Tag="dttlDriving" HorizontalAlignment="Center"/> 
     <TextBlock x:Name="DrivingDuration" Text="00:00" HorizontalAlignment="Center"/> 
    </StackPanel> 
    </Border> 
    <Border x:Name="ActiveWorkBorder" Background="#8000FFFF" BorderBrush="Black" BorderThickness="1" Opacity="1" Margin="0,0,-1,0"> 
    <StackPanel Orientation="Vertical" Margin="5,1" VerticalAlignment="Center"> 
     <TextBlock Text="ActiveWork" Tag="dttlActiveWork" HorizontalAlignment="Center"/> 
     <TextBlock x:Name="ActiveWorkDuration" Text="00:00" HorizontalAlignment="Center"/> 
    </StackPanel> 
    </Border> 
    <Border x:Name="AvailabilityBorder" Background="#80FFFF00" BorderBrush="Black" BorderThickness="1" Opacity="1" Margin="0,0,-1,0"> 
    <StackPanel Orientation="Vertical" Margin="5,1" VerticalAlignment="Center"> 
     <TextBlock Text="Availability" Tag="dttlAvailability" HorizontalAlignment="Center"/> 
     <TextBlock x:Name="AvailabilityDuration" Text="00:00" HorizontalAlignment="Center"/> 
    </StackPanel> 
    </Border> 
    <Border x:Name="BreakBorder" Background="#8000FF00" BorderBrush="Black" BorderThickness="1" Opacity="1" CornerRadius="0,5,5,0"> 
    <StackPanel Orientation="Vertical" Margin="5,1" VerticalAlignment="Center"> 
     <TextBlock Text="Break" Tag="dttlBreak" HorizontalAlignment="Center"/> 
     <TextBlock x:Name="BreakDuration" Text="00:00" HorizontalAlignment="Center"/> 
    </StackPanel> 
    </Border> 
</StackPanel> 
나는 그것이 내가 원하는대로 이미 동적으로 크기를 조정되고 그 위에 그려진 통치자,보다 넓은 있다면이 패널의 크기를 줄일 수 있도록하고 싶습니다,하지만 숙박 할 수있는 라벨 아래의 값을 싶습니다

가독성을 위해 크기입니다.

어떻게 접근하는 것이 가장 좋을까요? 나는 레이블의 FontSize 속성을 설정하거나 ScaleTransform을 사용하는 것을 고려해 봤지만 이것이 가장 좋은 방법인지 확신 할 수 없습니다. 실제로 글꼴 크기를 변경하지 않고 패널이 채택 할 너비를 도출 한 다음 ActualWidth를 테스트하는 방법이 있습니까? 이 작업을 수행하면이 작업을 더 쉽게 수행 할 수 있습니다.

답변

3

귀하의 질문을 완전히 이해할 수 있을지 잘 모르겠습니다.

X 폭의 제한을 받고있다 최상위 부모 StackPanel에의 경우이지만, 아이들은 라벨의 길이이 때문에보다 큰 전체 폭을 요청하는거야?

이 경우에는 ViewBox 컨트롤에서 레이블을 래핑하는 방법을 살펴보십시오 (Silverlight 도구 상자 library에서 찾을 수 있습니다).이 컨트롤은 사용 가능한 크기로 내용을 확장합니다.

+0

멋지다.이 트릭은 완벽합니다. 이것이 Silverlight의 문제점 중 일부입니다. 사용할 수있는 것만 알면됩니다. –