Обработка события щелчка DataGridHyperlinkColumn - PullRequest
12 голосов
/ 18 ноября 2009

Как программно обрабатывать событие щелчка DataGridHyperlinkColumn с помощью кода (в файле .xaml.cs).

Ответы [ 2 ]

16 голосов
/ 24 января 2010

Если вы просто хотите перейти по ссылке в браузере, это просто, как написать обработчик, подобный этому:

void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
  var destination = ((Hyperlink) e.OriginalSource).NavigateUri;
  Process.Start(destination.ToString());
}

Если вы вместо этого хотите выполнить какое-то пользовательское действие при навигации, используя информацию в соответствующей строке, вам потребуется доступ к контексту данных гиперссылки:

void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
  var rowData = ((Hyperlink) e.OriginalSource).DataContext as User;
  navigationService.NavigateToUserRecordForId(rowData.Id);
}

Если вы хотите программно создать столбец гиперссылки и привязать его к событию клика, вы можете сделать это:

var style = new Style(typeof(TextBlock));

style.Setters.Add(new EventSetter(Hyperlink.ClickEvent,     (RoutedEventHandler)EventSetter_OnHandler));

var column = new DataGridHyperlinkColumn { Header = "User", Binding = new Binding("ViewUserLink"), ElementStyle = style };

dataGrid1.Columns.Add(column);

Этот ответ о переполнении стека также содержит хорошую информацию о наборе данных GridHyperlinkColumn инструментария WPF, который стоит проверить.

12 голосов
/ 18 ноября 2009

используйте это:

<dg:DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
</Style>
</dg:DataGridHyperlinkColumn.ElementStyle>
</dg:DataGridHyperlinkColumn>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...