禁用DatagridHyperlinkColumn中的超链接

时间:2017-05-18 11:38:37

标签: c# wpf datagrid

我有一个WPF数据网格,它使用ItemsSource属性绑定到自定义类对象列表。 Grid有一个DataGridHyperlinkColum,它绑定到自定义类中的属性/字段。 我希望在自定义类中的另一个属性具有特定值时禁用此超链接。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以将StyleDataTrigger一起使用。

以下示例标记会在Hyperlink返回“x”时禁用YourOtherProperty

<DataGridHyperlinkColumn Header="ColA" Binding="{Binding YourLinkProperty}">
    <DataGridHyperlinkColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Style.Resources>
                <Style TargetType="Hyperlink">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding YourOtherProperty}" Value="x">
                            <Setter Property="IsEnabled" Value="False" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Style.Resources>
        </Style>
    </DataGridHyperlinkColumn.CellStyle>
</DataGridHyperlinkColumn>

它应该给你这个想法。

答案 1 :(得分:1)

我需要在WPF DataGrid单元格中禁用链接的类似功能,但在我的单元格中有EventSetter,所以我需要对@ mm8提出的解决方案进行一些修改

<DataGridHyperlinkColumn Binding="{Binding Converter={x:Static util:GetMemberName.Instance}}" Header="Member Name">
        <DataGridHyperlinkColumn.CellStyle>
            <Style TargetType="Hyperlink">
                <Setter Property="IsEnabled"  Value="{Binding HasPermission}">
                </Setter>
            </Style>
        </DataGridHyperlinkColumn.CellStyle>
        <DataGridHyperlinkColumn.ElementStyle>
            <Style>
                <EventSetter Event="Hyperlink.Click" Handler="Member_Hyperlink_Click" />
            </Style>
        </DataGridHyperlinkColumn.ElementStyle>
    </DataGridHyperlinkColumn>