2009-11-18 62 views

回答

10

使用这样的:

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

如果你只是想浏览的浏览器的链接,这是一个简单的写一个这样的处理程序:

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工具包的数据GridHyperlinkColumn好消息,非常值得一试。

+0

非常有帮助,谢谢! – JohnC 2011-06-02 18:27:22