我用TextBlock替換默認按鈕模板的ContentPresenter,因此可以在文本太長時修剪文本。Silverlight:帶有文本截斷的按鈕模板
在WPF中正常工作。在Silverlight中的文本被推到一邊,並在左側切斷時,即使是右側空間:
模板是沒有什麼特別的,只是替換爲TextBlock中的ContentPresenter:
<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>
我該如何解決這個問題?
更多信息: 隨着有關的HorizontalAlignment最新的評論,很顯然,SL的實現的TextTrimming從WPF的不同。在SL中,TextTrimming僅在文本左對齊時才起作用。 SL不夠聰明,可以像WPF一樣對齊文本。例如:
WPF按鈕:
SL按鈕與正文塊的HorizontalAlignment =中心:
與正文塊的HorizontalAlignment =左SL按鈕
請提供您的模板的xaml,以幫助我們幫助您:) – danbord 2010-12-23 01:29:00