前段时间在一个DataGrid中加入Hyperlink后,发现文字太长,会显示不完整。原来Hyperlink默认是不会换行显示的,于是动手改一下默认的样式,让Hyperlink可以自动换行。
先从这里Copy默认的样式到Styles.xaml文件中: http://msdn.microsoft.com/zh-cn/library/cc296242(VS.95).aspx
从默认样式中,会发现,只要修改其中的TextBlock,加上TextWrapping="Wrap" 就可以了。修改后的样式如下:
<TextBlock
x:Name="NormalTextBlock"
Text="{TemplateBinding Content}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"
Visibility="Visible" TextWrapping="Wrap" />
<TextBlock
x:Name="UnderlineTextBlock"
Text="{TemplateBinding Content}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"
TextDecorations="Underline"
Visibility="Collapsed" TextWrapping="Wrap" />
<TextBlock Canvas.ZIndex="1"
x:Name="DisabledOverlay"
Text="{TemplateBinding Content}"
Foreground="#FFAAAAAA"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"
Visibility="Collapsed" TextWrapping="Wrap" />
为DataGrid中的Hyperlink应用样式,运行后,发现有重影的问题,删除样式中的 ContentPresenter 部分就可以了。
BTW,记得要设置DataGrid中的宽度,不然就没有意义了。