2011-04-23 153 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

相關問題