Wpf 处理DataGridHyperlinkColumn单击事件

Wpf 处理DataGridHyperlinkColumn单击事件,wpf,datagrid,Wpf,Datagrid,如何通过代码(在.xaml.cs文件中)以编程方式处理DataGridHyperlinkColumn的单击事件。使用以下方法: <dg:DataGridHyperlinkColumn.ElementStyle> <Style TargetType="TextBlock"> <EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" /> </Style> </dg:DataG

如何通过代码(在.xaml.cs文件中)以编程方式处理DataGridHyperlinkColumn的单击事件。

使用以下方法:

<dg:DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
</Style>
</dg:DataGridHyperlinkColumn.ElementStyle>
</dg:DataGridHyperlinkColumn>

如果您只想将浏览器导航到链接,只需编写如下处理程序:

void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
  var destination = ((Hyperlink) e.OriginalSource).NavigateUri;
  Process.Start(destination.ToString());
}
如果您希望在导航时使用关联行中的信息执行某些自定义操作,则需要访问超链接的数据上下文:

void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
  var rowData = ((Hyperlink) e.OriginalSource).DataContext as User;
  navigationService.NavigateToUserRecordForId(rowData.Id);
}
如果要以编程方式创建超链接列并绑定到其单击事件,可以执行以下操作:

var style = new Style(typeof(TextBlock));

style.Setters.Add(new EventSetter(Hyperlink.ClickEvent,     (RoutedEventHandler)EventSetter_OnHandler));

var column = new DataGridHyperlinkColumn { Header = "User", Binding = new Binding("ViewUserLink"), ElementStyle = style };

dataGrid1.Columns.Add(column);
这也提供了关于WPF工具包的DataGridHyperlinkColumn的好信息,非常值得一看