2009-03-16 5 views
4

J'utilise le contrôle Datagrid de WPFToolkit. Je peux remplir le DataGrid, mais j'ai des problèmes avec DataGridHyperlinkColumn. Je voudrais qu'il affiche visuellement le lien en tant que nom de la personne, mais pour que le lien puisse aller à n'importe quelle valeur d'UriLink.Utilisation de DataGridHyperlinkColumn de WPFToolKit

Comment est-ce que je peux faire ceci? Qu'est-ce que je fais mal?

Xaml:

<dg:DataGridHyperlinkColumn Header="Person Name" Width="200" 
Binding="{Binding Path=PersonName}" IsReadOnly="True" 
TargetName="{Binding Path=UriLink}"></dg:DataGridHyperlinkColumn> 

Sinon, je mettrais plutôt un gestionnaire d'événements à la place, et de créer l'objet de page pour naviguer, mais je ne peux pas sembler tirer des données sur deux paramètres de l'événement (o et e dans ce cas), où obj1/obj2 sont des objets/variables de la ligne de l'hyperlien cliqué.

Xaml Alternative:

<dg:DataGridHyperlinkColumn Header="Person Name" Width="200" 
Binding="{Binding Path=PersonName}" IsReadOnly="True" 
TargetName="{Binding Path=UriLink}"> 
    <dg:DataGridHyperlinkColumn.ElementStyle> 
    <Style TargetType="TextBlock"> 
    <EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" /> 
    </Style> 
    </dg:DataGridHyperlinkColumn.ElementStyle> 
    </dg:DataGridHyperlinkColumn> 

code VB (pour XAML Alternative):

Private Sub OnHyperlinkClick(ByVal o As Object, ByVal e As RoutedEventArgs) 

     'TODO: Create page to navigate to 
     Dim page As New RedirectPage(obj1, obj2) 
     Me.NavigationService.Navigate(page) 

End Sub 
+0

http://stackoverflow.com/questions/1755455/handle-datagridhyperlinkcolumn-click-event –

Répondre

2

Copie o en tant que TextBlock, c'est DataContext est l'objet de votre ligne. Vous pouvez le transformer en votre type d'objet. Comme AKCODer l'a dit, c'est dans le DataContext.

0

Peut-être que l'événement Hyperlink.RequestNavigate fonctionnerait mieux? Il semble que le EventArgs contient l'URI que la cible de navigation est, ce qui devrait être l'URI du contrôle de lien hypertexte lui-même.

0

En utilisant le gestionnaire d'événements OnHyperlinkClick, je les suivantes:

DirectCast(DirectCast(DirectCast(e.Source, System.Object), System.Windows.Documents.Hyperlink).DataContext, System.Object)