使用WPF DataGridHyperLinkColumn项打开Windows资源管理器并打开文件

时间:2011-04-23 15:06:39

标签: wpf datagrid hyperlink uri

我想实现以下目标:

创建一个包含2列的WPF DataGrid:

第一个将显示以超链接样式显示目录路径的项目。单击超链接将在项目指定的路径中打开Windows资源管理器。

第二个将显示以超链接样式显示文件路径的项目。单击超链接将启动该文件,并使用Windows定义的默认应用程序。

我不知道它是否是正确的选择,但我将DataGridHyperlinkColumn添加到我的DataGrid中。一个问题是添加不涉及互联网位置的Uri项目。另一个问题是以不打开Web浏览器的方式处理点击。

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:39)

这普遍适用:

<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浏览器打开,如果它是一个文件夹,它将在资源管理器中打开,如果它是一个文件,它将使用与之关联的默认应用程序打开。 / p>


要将此项用于自动生成的列,您的属性必须为Uri类型,以便生成DataGridHyperlinkColumn。然后,您可以通过将样式放在DataGrid.Resources

中来连接事件
<DataGrid.Resources>
    <Style TargetType="Hyperlink">
        <EventSetter Event="Click" Handler="DG_Hyperlink_Click"/>
    </Style>
</DataGrid.Resources>