2009-11-18 18 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); 
} 
それは、イベントをクリックしますと、あなたがプログラム的にハイパーリンク列を作成し、バインドしたい場合は

、あなたがこれを行うことができます:

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