4

WPFToolkit の Datagrid コントロールを使用しています。データグリッドを設定できますが、DataGridHyperlinkColumn に問題があります。リンクを Person の名前として視覚的に表示したいのですが、リンクは UriLink の値が何であれ移動します。

これどうやってするの?私は何を間違っていますか?

Xaml:

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

または、代わりにイベント ハンドラーを配置し、移動先のページ オブジェクトを作成しますが、イベントの 2 つのパラメーター (この場合は o と e) からデータを引き出すことができないようです。ここで、obj1/obj2クリックされたハイパーリンクの行のオブジェクト/変数です。

代替 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 コード (代替 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
4

3 に答える 3

3

oをTextBlockとしてキャストすると、DataContextが行のオブジェクトになります。オブジェクトタイプとしてキャストできます。

于 2009-03-25T19:03:22.840 に答える
0

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

于 2009-03-21T23:34:06.403 に答える
0

AKCODerが言ったように、それはDataContextにあります。OnHyperlinkClickイベントハンドラーを使用して、次を使用しました。

DirectCast(DirectCast(DirectCast(e.Source, System.Object), System.Windows.Documents.Hyperlink).DataContext, System.Object)
于 2009-04-06T13:47:39.110 に答える