处理DataGridHyperlinkColumn单击事件

时间:2009-11-18 11:43:23

标签: wpf datagrid

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

2 个答案:

答案 0 :(得分:16)

如果你只想浏览浏览器链接,那就像编写这样的处理程序一样简单:

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);
}

如果要以编程方式创建超链接列,并绑定到它的click事件,则可以执行以下操作:

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

这个stack overflow answer在WPF工具包的Data GridHyperlinkColumn上也有很好的信息,非常值得一试。

答案 1 :(得分:12)

使用它:

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