You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为C#的DataGridHyperlinkColumn添加点击导航功能?

实现DataGridHyperlinkColumn点击跳转的方案

方案一:自定义CellTemplate,借助Hyperlink的RequestNavigate事件

DataGridHyperlinkColumn没有直接暴露Click事件,但可以通过自定义单元格模板,用Hyperlink控件来实现跳转逻辑——该控件自带RequestNavigate事件,能完美处理点击跳转需求。

XAML示例代码:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Hyperlink">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock>
                        <!-- 绑定跳转地址和显示文本,同时绑定事件 -->
                        <Hyperlink NavigateUri="{Binding TargetUrl}" RequestNavigate="Hyperlink_RequestNavigate">
                            <TextBlock Text="{Binding Name}" />
                        </Hyperlink>
                    </TextBlock>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

后台处理逻辑(C#):

private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
    // 示例1:打开自定义WPF窗口
    var targetWindow = new YourTargetPageWindow();
    targetWindow.Show();

    // 示例2:打开外部网页(需引入System.Diagnostics命名空间)
    // Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true });

    e.Handled = true;
}

方案二:监听DataGrid的CellClick事件

如果不想修改列的模板结构,可以直接监听DataGrid的CellClick事件,判断点击的单元格是否属于目标超链接列,再执行跳转。

XAML示例代码:

<DataGrid x:Name="MyDataGrid" CellClick="MyDataGrid_CellClick">
    <DataGrid.Columns>
        <DataGridHyperlinkColumn x:Name="HyperlinkColumn" Header="Hyperlink" ContentBinding="{Binding Name}" />
    </DataGrid.Columns>
</DataGrid>

后台处理逻辑(C#):

private void MyDataGrid_CellClick(object sender, DataGridCellEventArgs e)
{
    // 确认点击的是目标超链接列
    if (e.Column == HyperlinkColumn)
    {
        // 获取当前行绑定的数据对象
        var dataModel = e.Row.Item as YourDataModel;
        if (dataModel != null)
        {
            // 执行跳转逻辑,比如根据数据打开对应页面
            var targetWindow = new YourTargetPageWindow();
            targetWindow.Show();
        }
    }
}

补充说明

  • 确保你的数据模型(如YourDataModel)包含Name(用于显示文本)和TargetUrl(如果需要绑定跳转地址)这类必要属性。
  • 若跳转外部网页,需添加using System.Diagnostics;引用,并保证应用拥有相应的系统权限。

内容的提问来源于stack exchange,提问作者Samo Grca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:12:27