Использование WPFToolKit's DataGridHyperlinkColumn - PullRequest
4 голосов
/ 16 марта 2009

Я использую элемент управления Datagrid от WPFToolkit. Я могу заполнить сетку данных, но у меня возникли проблемы с 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

Ответы [ 3 ]

2 голосов
/ 25 марта 2009

Преобразуйте в TextBlock, это DataContext - объект вашей строки. Вы можете привести его к типу объекта.

0 голосов
/ 06 апреля 2009

Как сказал AKCODer, он находится в DataContext. Используя обработчик события OnHyperlinkClick, я использовал следующее:

DirectCast(DirectCast(DirectCast(e.Source, System.Object), System.Windows.Documents.Hyperlink).DataContext, System.Object)
0 голосов
/ 22 марта 2009

Может быть, событие Hyperlink.RequestNavigate будет работать лучше? Похоже, что EventArgs содержит URI, которым является цель навигации, который должен быть URI самого элемента управления гиперссылкой.

...