2009-03-16 11 views
4

Ich verwende WPFToolkit Datagrid-Steuerelement. Ich kann das Datagrid auffüllen, aber ich habe Probleme mit der DataGridHyperlinkColumn. Ich möchte, dass es den Link als den Namen der Person anzeigt, aber für den Link, um zu gehen, was UriLinks Wert ist.Verwenden von WPFToolKit DataGridHyperlinkColumn

Wie kann ich das tun? Was mache ich falsch?

XAML:

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

Alternativ würde ich eher einen Event-Handler in stattdessen setzen, und erstellen Sie die Seite Objekt zu navigieren, aber ich kann keine Daten aus den beiden Parametern der Veranstaltung zu ziehen scheinen (o und e in diesem Fall), wobei obj1/obj2 Objekte/Variablen der Zeile des angeklickten Hyperlinks sind.

Alternative XAML:

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

VB-Code (für Alternative XAML):

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 –

Antwort

2

Ausgesprochen als TextBlock ist DataContext das Objekt Ihrer Zeile. Sie können es als Ihren Objekttyp darstellen.

0

Vielleicht ist das Hyperlink.RequestNavigate Ereignis würde besser funktionieren? Es sieht so aus, als ob die EventArgs den URI des Navigationsziels enthält, der der URI des Hyperlink-Steuerelements selbst sein sollte.

0

Wie AKCODER gesagt hat, ist es im DataContext. Mit Hilfe der OnHyperlinkClick Event-Handler, habe ich folgendes:

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