我用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