2009-03-16 17 views
4

私はWPFToolkitのDatagridコントロールを使用しています。 DataGridにデータを設定できますが、DataGridHyperlinkColumnに問題があります。人の名前としてリンクを視覚的に表示したいのですが、リンクはUriLinkの価値が何であれ行くことができます。WPFToolKitのDataGridHyperlinkColumnの使用

どうすればいいですか?私は間違って何をしていますか?

XAML:

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

代わりに、私はむしろ代わりにイベントハンドラを置く、とにナビゲートするページオブジェクトを作成しますが、私は、イベントの二つのパラメータのうちのいずれかのデータを取得するように見えることができないでしょう(ここではoとe)、ここでobj1/obj2はクリックされたハイパーリンクの行のオブジェクト/変数です。

代替XAML:(オルタナティブ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コード:

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 –

答えて

2

キャストoはTextBlockとして、DataContextは行のオブジェクトです。オブジェクト型としてキャストすることができます。

0

たぶんHyperlink.RequestNavigateイベントがより良い仕事でしょうか? EventArgsには、ナビゲーション対象のURIが含まれているように見えます。このURIは、ハイパーリンクコントロール自体のURIである必要があります。

0

AKCODerが述べたように、それはDataContextにあります。 OnHyperlinkClickイベントハンドラを使用して、私は次のように使用:

DirectCast(DirectCast(DirectCast(e.Source, System.Object), System.Windows.Documents.Hyperlink).DataContext, System.Object) 
関連する問題