2011-04-23 155 views
12

我要实现以下目标:使用WPF DataGridHyperLinkColumn项目,打开Windows资源管理器和打开文件

创建一个有2列的WPF的DataGrid:

第一个将有项目展示路径的目录,在超链接样式。点击超链接将打开该项目指定的路径中的Windows资源管理器。

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

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

任何人都可以帮忙吗?

回答

33

此作品普遍:

<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> 
+0

美丽,谢谢!顺便说一下,当这些列自动生成时(从我的案例中的数据表),这是如何完成的? – Yoni 2011-04-24 15:26:53

+0

我添加了一些关于这个到我的答案的信息,但我不知道这是否适用于'DataTables',因为我从来没有使用它们(你需要有一个'Uri'属性)。 – 2011-04-25 01:04:34

+0

是否可以指定一个绑定以外的链接? – flux 2016-04-14 18:30:14

相关问题