如何通过代码(在.xaml.cs文件中)以编程方式处理DataGridHyperlinkColumn的click事件.
Bit*_*der 16
如果您只想将浏览器导航到链接,那么编写像这样的处理程序就很简单:
void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
var destination = ((Hyperlink) e.OriginalSource).NavigateUri;
Process.Start(destination.ToString());
}
Run Code Online (Sandbox Code Playgroud)
如果您想在导航时使用相关行中的信息进行一些自定义操作,那么您将需要访问超链接的数据上下文:
void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
var rowData = ((Hyperlink) e.OriginalSource).DataContext as User;
navigationService.NavigateToUserRecordForId(rowData.Id);
}
Run Code Online (Sandbox Code Playgroud)
如果要以编程方式创建超链接列,并绑定到它的单击事件,则可以执行以下操作:
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);
Run Code Online (Sandbox Code Playgroud)
这个堆栈溢出答案在WPF工具包的Data GridHyperlinkColumn上也有很好的信息,非常值得一试.
vik*_*iky 12
用这个:
<dg:DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
</Style>
</dg:DataGridHyperlinkColumn.ElementStyle>
</dg:DataGridHyperlinkColumn>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12782 次 |
| 最近记录: |