我使用的是WPFToolkit的Datagrid控件。我可以填充数据网格,但我在使用DataGridHyperlinkColumn时遇到问题。我希望它在视觉上将链接显示为人名,但链接要转到任何UriLink的值。
我该怎么做呢?我做错了什么?
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:
<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
发布于 2009-03-25 19:03:23
将o强制转换为TextBlock,它的DataContext是您的行的对象。您可以将其转换为您的对象类型。
发布于 2009-03-21 23:34:06
也许Hyperlink.RequestNavigate事件会工作得更好?看起来EventArgs
包含导航目标所在的URI,它应该是超级链接控件本身的URI。
发布于 2009-04-06 13:47:39
正如AKCODer所说,它在DataContext中。通过使用OnHyperlinkClick事件处理程序,我使用了以下内容:
DirectCast(DirectCast(DirectCast(e.Source, System.Object), System.Windows.Documents.Hyperlink).DataContext, System.Object)
https://stackoverflow.com/questions/651416
复制相似问题