2012-05-26 112 views
0

我正在編寫一個WPF應用程序,並在一個用戶控件中使用DataGrid中的超鏈接,但它不起作用。我正在使用bing.com來測試。DataGrid中的超鏈接不起作用

<DataGrid Grid.Row="1" 
    AutoGenerateColumns="False" 
    Height="Auto" 
    Name="dataGrid1" 
    Width="Auto" 
    CanUserAddRows="False" 
    CanUserResizeColumns="True" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch" 
    Focusable="True" 
    IsHitTestVisible="False" 
    BorderThickness="0"> 
    <DataGrid.Columns > 
     <DataGridTextColumn Header="Start Time" Width="*" Binding="{Binding Path=startTime}" CanUserSort="True"/> 
     <DataGridTextColumn Header="End Time" Width="*" Binding="{Binding Path=endTime}" CanUserSort="True"/> 
     <DataGridTextColumn Header="Resources" Width="*" Binding="{Binding Path=resources}" CanUserSort="True"/> 
     <DataGridTextColumn Header="Action" Width="*" Binding="{Binding Path=action}" CanUserSort="True"/> 
     <DataGridTextColumn Header="Result" Width="*" Binding="{Binding Path=result}" CanUserSort="True"/> 
     <DataGridTemplateColumn Header="Health" Width="*" CanUserSort="True"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock > 
         <Hyperlink NavigateUri="http://www.bing.com" RequestNavigate="Hyperlink_RequestNavigate"><!--"{Binding Path=healthUri}">--> 
          <TextBlock Text="{Binding Path=healthUri}" Focusable="True" />                      
         </Hyperlink>          
        </TextBlock> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+1

爲什麼不直接使用[DataGridHyperlinkColumn(http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridhyperlinkcolumn.aspx)? – Filburt

回答

1

從MSDN:如果任一超鏈接的直接或間接的父是導航主機,包括NavigationWindow,幀,或可承載的XBAP任何瀏覽器(包括因特網只能發生

超鏈接導航Explorer 7,Microsoft Internet Explorer 6和Firefox 2.0+)。

你可以這樣做:

<Hyperlink NavigateUri="http://www.bing.com" RequestNavigate="Hyperlink_RequestNavigate"> 

private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri)); 
    e.Handled = true; 
} 
+0

Thnx大家。 Stipo,這工作。 Filburt,我是一個新手,一定會嘗試使用你的提示。 – RATHI