2009-11-18 61 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