2010-11-30 19 views
1

Je veux pouvoir avoir du texte cliquable comme dans les pages Web de WPF. Le contrôle devrait avoir à la fois un texte non fonctionnel (pour l'affichage) et certaines de ses parties comme étant complètement cliquables.Lien cliquable à l'intérieur d'un contrôle de texte comme RichTextControl dans WPF?

Dire comme Wikipedia.

Mais il s'agit d'une application autonome autonome hors ligne.

J'ai essayé plusieurs choses mais je ne pouvais pas le faire, en particulier le clic ne fonctionne pas comme les pages Web, c'est-à-dire 1 clic pour ouvrir l'URL contenue dans les outils.

Répondre

1

Si vous ne disposez pas d'une exigence que ce soit une FlowDocument entière, alors vous pouvez simplement utiliser une ancienne plaine WPF TextBlock, et mettre Hyperliens en elle.

<TextBlock> 
    Here's some text with a 
    <Hyperlink NavigateUri="Page2.xaml">link to another XAML page</Hyperlink> 
    and a 
    <Hyperlink NavigateUri="http://msdn.microsoft.com/">link to the 
    Web</Hyperlink>. 
</TextBlock> 

Si vous avez besoin de défilement Si vous avez besoin de la visionneuse multi-colonnes paginée, vous devrez utiliser un FlowDocument général, mais si vous ne voulez que du texte avec des liens hypertexte, cliquez sur TextBlock + Hyperlien.

+0

Merci, car savez-vous la différence entre HyperLink et LinkLabel? –

+1

Il y a beaucoup de différences entre eux. Le plus grand est celui est WinForms et l'autre est WPF. –

1

vous devriez essayer de régler le document de flux et de créer manuellement des liens hypertexte dans le document de flux ...

Voici un texte tiré du lien suivant: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/99ae9d9c-1dd4-4acd-8d5d-6eb739adeb98

" Salut,

C'est possible Voici un petit exemple de création de lien hypertexte vers le paragraphe/la section/le tableau:

o site web, nous pouvons créer un Frame Control pour la navigation. La relation hiérarchique des éléments dans cet exemple est comme ceci:

Cadre -> FlowDocument -> Tableau -> Section -> Paragraphe -> Hyperlink

Dans le code sous-jacent:

public Window1() 
     { 
      InitializeComponent(); 

      // add a Frame for navigation 
      Frame frame = new Frame(); 
      this.Content = frame; 
      //add FlowDocument 
      FlowDocument doc = new FlowDocument(); 
      frame.Navigate(doc); 

      //add Table 
      Table table = new Table(); 
      doc.Blocks.Add(table); 
      TableRowGroup group = new TableRowGroup(); 
      table.RowGroups.Add(group); 

      TableColumn col1 = new TableColumn(); 
      TableColumn col2 = new TableColumn(); 
      table.Columns.Add(col1); 
      table.Columns.Add(col2); 

      TableRow row1 = new TableRow(); 
      TableCell cel1 = new TableCell(); 
      row1.Cells.Add(cel1); 

      group.Rows.Add(row1); 

      //add Section 
      Section mySection = new Section(); 
      //add section to the Table cell. 
      cel1.Blocks.Add(mySection); 

      Paragraph paraValue = new Paragraph(); 
      Hyperlink hl = new Hyperlink(new Run("Click Here to Google")); 
      hl.Foreground = Brushes.Red; 
      paraValue.Inlines.Add(hl); 

      hl.FontSize = 11; 
      hl .NavigateUri =new Uri ("Http://www.google.cn"); 

      mySection.Blocks.Add(paraValue); 
     } 

Si vous avez d'autres questions à ce sujet, n'hésitez pas à demander.

Merci. "

+0

Merci, je pensais vraiment que ça allait être quelque chose comme t son: –

+0

http://community.visual-basic.it/alessandroenglish/archive/2009/03/12/25115.aspx –