制作一个可以换行显示的HyperLink
前段时间在一个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中的宽度,不然就没有意义了。