【问题标题】:WPF - style hyperlinks in DataGridsWPF - DataGrids 中的样式超链接
【发布时间】:2012-05-28 14:54:18
【问题描述】:

我需要在 WPF4 DataGrid 控件中设置超链接的样式(它们出现在 DataGridHyperlinkColumn 类型的列中)。我在项目中有许多 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: ""; }

【问题讨论】:

    标签: wpf xaml wpfdatagrid


    【解决方案1】:

    由于属性值继承,所有链接实例都会继承您创建的样式,因为您没有使用 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>
    

    【讨论】:

    • 我认为,only 对具有 DataGrid 的祖先 的链接实例应用自定义样式是不可能的。谢谢你的回答:)
    • @buli - 您可以在数据网格的资源中放置一个无键样式,然后只有数据网格中的链接将获得样式,其他链接将具有默认样式。
    • @XAMeLi - 但是我可以将样式应用于 DataGrid 一般(例如,当我动态创建它们时),还是仅应用于实例(在其资源中)?
    • 虽然不建议这样做,但您可以尝试为DataGrid 创建样式,并在定义超链接样式的位置添加Style.Resources 标签。如果这不起作用,请尝试在 ControlTemplate 级别执行此操作,即ControlTemplate.Resources
    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2011-03-24
    • 2012-01-30
    • 2012-09-25
    相关资源
    最近更新 更多