在我正在研究的Silverlight界面中,我們需要在其容器調整大小時調整堆棧面板的大小,以防止其中的文本被截斷。有問題的文本是在運行時從語言文件添加的,具體取決於用戶選擇的語言。由於字符串的長度在各種語言之間可能有很大差異,所以我很難理解如何最好地實現這一點。這就是它的樣子。如何以動態文本調整XAML的大小
有問題的堆疊面板是彩色塊和標籤駕駛,主動工作,可用性和可中斷的,其長度可以改變的字符串。 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?如果我能做到這一點,這將使這個任務更容易。
很酷,這完美的訣竅。這是我Silverlight問題的一部分;只知道有什麼可用的。 – 2009-07-13 12:44:43