【问题标题】:Disable Hyperlink in DatagridHyperlinkColumn在 DatagridHyperlinkColumn 中禁用超链接
【发布时间】:2017-10-18 04:56:48
【问题描述】:

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

【问题讨论】:

  • 您可以使用DataGridTemplateColumn + 模板和Hyperlink(例如使用TemplateSelector)。
  • 你能举个例子吗?
  • 我无法比教程更好地解释它:click + click

标签: c# wpf datagrid


【解决方案1】:

您可以使用StyleDataTrigger

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

<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>

它应该会给你这个想法。

【讨论】:

  • 我认为他需要{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}},Path=DataContext.YourOtherProperty} 才能访问YourOtherProperty,但现在还不能完全确定
  • @grek40:他没有提供“YourOtherProperty”是 IEnumerable ItemsSource 集合中类型 T 的属性。
  • 实际上他确实... “网格有一个绑定到自定义类中的属性/字段的 DataGridHyperlinkColum”“自定义类中的另一个属性” 。可能不完全清楚,但默认假设应该是“自定义类”指的是集合项。
  • @grek40:再次阅读问题:“我有一个 WPF 数据网格,它使用 ItemsSource 属性绑定到自定义类对象列表......”。自定义类是我猜这里的类型 T。
  • 我想我把它和扩展 WPF DataGridControl 列的问题混在一起了,对于大多数内部绑定,列属性将成为 DataContext,抱歉。
【解决方案2】:

我需要在 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>  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多