如何将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
相关产品推荐
相关产品推荐

