2009-11-18 3 views

Répondre

10

utiliser ceci:

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

Si vous voulez juste naviguer dans le navigateur pour le lien, il est aussi simple que l'écriture d'un gestionnaire comme ceci:

void EventSetter_OnHandler(object sender, RoutedEventArgs e) 
{ 
    var destination = ((Hyperlink) e.OriginalSource).NavigateUri; 
    Process.Start(destination.ToString()); 
} 

Si vous voulez au lieu de prendre un certain action personnalisée lors de la navigation, en utilisant les informations dans la ligne associée, puis vous aurez besoin d'accéder au contexte de données de l'hyperlien:

void EventSetter_OnHandler(object sender, RoutedEventArgs e) 
{ 
    var rowData = ((Hyperlink) e.OriginalSource).DataContext as User; 
    navigationService.NavigateToUserRecordForId(rowData.Id); 
} 

Si vous voulez créer programatically une colonne de lien hypertexte et se lier à ce cliquons événement, vous pouvez le faire:

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

Cette stack overflow answer a également une bonne information sur les données de boîte à outils WPF GridHyperlinkColumn, bien la peine de vérifier.

+0

Très utile, merci! – JohnC