2011-10-25 10 views
0

J'essaie de créer un lien hypertexte que l'utilisateur peut cliquer et naviguer vers un site Web.Le lien hypertexte continue d'échouer

Le lien fonctionne mais j'obtiens cette exception qui arrête l'application: Echec de la conversion de la ressource en objet.

L'hyperlien fait partie d'une grille de données. Voici ce que j'ai:

XAML:

... 
<DataTemplate x:Key="hyperlinkTemplate"> 
    <TextBlock> 
     <Hyperlink NavigateUri="{Binding Link}" RequestNavigate="dataLink_RequestNavigate"> 
      <TextBlock Text="{Binding TaskID}"></TextBlock> 
     </Hyperlink> 
    </TextBlock> 
</DataTemplate> 
... 

<DataGrid Grid.Column="1" AutoGenerateColumns="False" ItemsSource="{Binding Tasks}" > 
    <DataGrid.Columns> 
     <DataGridTemplateColumn Header="Name width link" CellTemplate="{StaticResource  hyperlinkTemplate}"></DataGridTemplateColumn> 
... 

=============================== ===================================

code derrière:

... 
private void dataLink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) 
{ 
    Process.Start(e.Uri.ToString()); 
    e.Handled = true; 
} 
... 

= ============================================= ================

Données de la classe: Lien

public string Link 
    { 
     get { return link; } 
     set 
     { 
      link = value; 
      Notify("Link"); 
     } 
    } 

=========================================== =======================

classe Task

[Serializable] 
public class Task 
{ 
    private XmlNode node; 
    private string category = ""; 
    private int taskID = -1; 
    private string taskName = ""; 
    private string taskResponsible = ""; 
    private string taskResponsibleDepartment = ""; 
    private int priority = 5; 
    private string status = "Unknown"; 
    private string predecessorIndices = "None"; 
    private int indentLevel = 0; 
    private int sortOrder = 0; 
    private DateTime startDate = DateTime.Now; 
    private TimeSpan estimatedHours = default(TimeSpan); 
    private TimeSpan actualHours = default(TimeSpan); 
    private DateTime estimatedDeploymentDate = default(DateTime); 
    private DateTime desiredImplementationDate = default(DateTime); 
    private string estimatedHoursRecovery = ""; 
    private string actualHoursRecovery = ""; 
    private string tags = ""; 
    private TimeSpan totalHoursActual = default(TimeSpan); 
    private Department iN = new Department(); 
    private Department aPP = new Department(); 
    private Department sIS = new Department(); 
    private string link = ""; 
... 

============== ============================================= ==

Avez-vous des suggestions?

BR

+0

pourquoi utilisez-vous à la fois la propriété '' NavigateUri' et événement RequestNavigate'? Le premier ne devrait-il pas suffire? –

+0

pouvez-vous coller le code de la collection Tâches et son type? –

+0

Pourquoi? Est-ce parce que j'ai suivi la réponse à cette question: http://stackoverflow.com/questions/2092890/add-hyperlink-to-textblock-wpf Que suggérez-vous? – Sulby

Répondre

2

Je me suis découvert. J'avais besoin d'ajouter e.handled = true; au datagrid_RequestNavigate. Juste mis à jour les exemples de code aussi.

Il travaille maintenant tous