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

如何将SfDataGrid的DataGridTextColumn转为可点击超链接及开启列手动调整?

解决SfDataGrid的两个需求:超链接列和列手动调整大小

一、开启列手动调整大小

只需在SfDataGrid标签中添加AllowResizingColumns="True"属性,用户即可通过拖动列边框手动调整列宽:

<syncfusion:SfDataGrid x:Name="PasswdVw" Grid.Row="2" Grid.Column="2" Grid.RowSpan="2" ItemsSource="{Binding PassWrd}"
                       SelectedRow="{Binding SelPassRws, Mode=TwoWay}" GridLinesVisibility="Both" SelectionMode ="Multiple" NavigationMode="Row"
                       Margin="20,20,0,0" HeaderRowHeight="35" ColumnWidthMode="Fill"
                       VerticalScrollBarVisibility="Always" SortingMode="Single"
                       AllowResizingColumns="True"> <!-- 新增此属性开启列调整 -->

二、将PassUrl列转为可点击超链接

把原有的DataGridTextColumn替换为DataGridTemplateColumn,在单元格模板中嵌入超链接控件,具体实现分平台:

WPF版本

<syncfusion:SfDataGrid.Columns>
    <!-- 其他列保持不变 -->
    <syncfusion:DataGridTemplateColumn MappingName="PassUrl" HeaderText="Web Site">
        <syncfusion:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Hyperlink NavigateUri="{Binding PassUrl}" RequestNavigate="Hyperlink_RequestNavigate">
                    <TextBlock Text="{Binding PassUrl}" />
                </Hyperlink>
            </DataTemplate>
        </syncfusion:DataGridTemplateColumn.CellTemplate>
    </syncfusion:DataGridTemplateColumn>
</syncfusion:SfDataGrid.Columns>

后台添加点击事件处理:

private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
    System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(e.Uri.AbsoluteUri));
    e.Handled = true;
}

Xamarin.Forms版本

<syncfusion:SfDataGrid.Columns>
    <!-- 其他列保持不变 -->
    <syncfusion:DataGridTemplateColumn MappingName="PassUrl" HeaderText="Web Site">
        <syncfusion:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <HyperlinkButton Text="{Binding PassUrl}" Clicked="HyperlinkButton_Click" />
            </DataTemplate>
        </syncfusion:DataGridTemplateColumn.CellTemplate>
    </syncfusion:DataGridTemplateColumn>
</syncfusion:SfDataGrid.Columns>

后台添加点击事件处理:

private async void HyperlinkButton_Click(object sender, EventArgs e)
{
    var button = sender as HyperlinkButton;
    if (Uri.TryCreate(button.Text, UriKind.Absolute, out var uri))
    {
        await Launcher.OpenAsync(uri);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:15:39