2009-11-18 48 views

Trả lời

10

sử dụng này:

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

Nếu bạn chỉ muốn điều hướng trình duyệt đến liên kết, đó là một đơn giản như viết một handler như thế này:

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

Nếu bạn thay vì muốn lấy một số hành động tùy chỉnh khi điều hướng, sử dụng thông tin trong hàng được liên kết, khi đó bạn sẽ cần truy cập vào ngữ cảnh dữ liệu của siêu liên kết:

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

Nếu bạn muốn programatically tạo ra một cột siêu liên kết, và liên kết với nó nhấp sự kiện, bạn có thể làm điều này:

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 này cũng có thông tin tốt về dữ liệu GridHyperlinkColumn bộ công cụ của WPF, cũng đáng để thử qua.

+0

Rất hữu ích, cảm ơn bạn! – JohnC

Các vấn đề liên quan