WPF ToolKit DataGridHyperlinkColumnの使用
-
19-08-2019 - |
質問
WPFToolkitのDatagridコントロールを使用しています。データグリッドにデータを入力できますが、DataGridHyperlinkColumnに問題があります。リンクを人の名前として視覚的に表示したいのですが、リンクは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
解決
TextBlockとしてのキャストo、DataContextは行のオブジェクトです。オブジェクトタイプとしてキャストできます。
他のヒント
Hyperlink.RequestNavigate イベントはもっとうまくいくでしょうか? EventArgs
にはナビゲーションターゲットのURIが含まれているように見えます。これはハイパーリンクコントロール自体のURIである必要があります。
AKCODerが言ったように、それはDataContextにあります。 OnHyperlinkClickイベントハンドラーを使用して、次を使用しました。
DirectCast(DirectCast(DirectCast(e.Source, System.Object), System.Windows.Documents.Hyperlink).DataContext, System.Object)
所属していません StackOverflow