2009-11-18 5 views

ответ

10

использовать это:

<dg:DataGridHyperlinkColumn.ElementStyle> 
<Style TargetType="TextBlock"> 
<EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" /> 
</Style> 
</dg:DataGridHyperlinkColumn.ElementStyle> 
</dg:DataGridHyperlinkColumn> 
14

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

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); 

Это stack overflow answer также имеет хорошую информацию о МОФ наборе инструментов Data GridHyperlinkColumn, стоит проверить.

+0

Очень полезно, спасибо! – JohnC

Смежные вопросы