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

posted on 2010-12-09 17:28  海毛虫  阅读(640)  评论(0编辑  收藏  举报