我想要实现以下目标:
创建一个具有2列的WPF DataGrid:
第一个将具有显示目录路径的项目,以超链接样式.单击超链接将在项目指定的路径中打开Windows资源管理器.
第二个将以超链接样式显示文件路径的项目.单击超链接将启动文件,并使用Windows定义的默认应用程序.
我不知道这是否是正确的选择,但我将DataGridHyperlinkColumn添加到我的DataGrid.一个问题是添加不涉及互联网位置的Uri项目.另一个问题是以不打开网络浏览器的方式处理点击.
任何人都可以帮忙
这普遍有效:
<DataGridHyperlinkColumn Binding="{Binding Link}"> <DataGridHyperlinkColumn.ElementStyle> <Style> <EventSetter Event="Hyperlink.Click" Handler="DG_Hyperlink_Click"/> </Style> </DataGridHyperlinkColumn.ElementStyle> </DataGridHyperlinkColumn>
private void DG_Hyperlink_Click(object sender,RoutedEventArgs e) { Hyperlink link = (Hyperlink)e.OriginalSource; Process.Start(link.NavigateUri.AbsoluteUri); }
如果URI指向一个网站,它将使用默认的Web浏览器打开,如果它是一个文件夹,它将在资源管理器中打开,如果它是一个文件,它将使用与之关联的默认应用程序打开.
要将此属性用于自动生成的列,您的属性需要为Uri类型,因此将生成DataGridHyperlinkColumn.然后,您可以通过将样式放在DataGrid.Resources中来连接事件:
<DataGrid.Resources> <Style TargetType="Hyperlink"> <EventSetter Event="Click" Handler="DG_Hyperlink_Click"/> </Style> </DataGrid.Resources>