WPF - 如何在DataGrid中为超链接样式设置格式

4

我需要为WPF4 DataGrid控件中的超链接(它们出现在DataGridHyperlinkColumn类型的列中)设置样式。我在项目中有许多DataGrid,希望将超链接样式应用于所有DataGrid。

我发现了这个问题和答案:WPF Style DataGridHyperlinkColumn 并创建了HyperLink控件的样式:

<Style TargetType="{x:Type Hyperlink}">
    <Setter Property="TextDecorations" Value="" />
</Style>

它可以正常工作,但显然也会影响所有其他超链接,例如在

<TextBlock>
    <Hyperlink NavigateUri="http://www.google.co.in">Click here</Hyperlink>
</TextBlock>

如何仅针对DataGrids中的超链接进行定位?在CSS语法中,可以使用以下方式:
DataGrid Hyperlink {TextDecorations: ""; }
1个回答

3
由于属性值继承,所有链接实例都会继承您创建的样式,因为您没有使用x:key属性。
您可以添加x:key属性:
<Style TargetType="{x:Type Hyperlink}" x:Key="HyperlinkStyle1">
    <Setter Property="TextDecorations" Value="" />
</Style>

通过使用此方法,您可以像下面这样从控件中引用它:
<Hyperlink NavigateUri="http://www.google.co.in" Style={StaticResource HyperlinkStyle1}>Click here</Hyperlink>

我认为,仅对具有DataGrid祖先的链接实例应用自定义样式是不可能的。谢谢回答 :) - Paweł Bulwan
@buli - 你可以在数据网格的资源中放置一个无钥匙样式,然后只有数据网格中的链接会获得该样式,其他链接将具有默认样式。 - XAMeLi
@XAMeLi - 但是我可以将样式应用于DataGrid 一般情况下(例如,当我动态创建它们时),还是仅应用于实例(在其资源中)? - Paweł Bulwan
虽然这不是推荐的做法,但你可以尝试为 DataGrid 创建一个样式,并在其中添加 Style.Resources 标签来定义超链接的样式。如果这不起作用,可以尝试在 ControlTemplate 级别上进行操作,即 ControlTemplate.Resources - XAMeLi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接