Avec le modèle MVVM, comment lier dynamiquement une ICommand à l'événement click d'un lien hypertexte à l'intérieur d'un RichTextBox ?Comment lier un lien hypertexte WPF dans une zone de texte riche à une commande?
Répondre
C'est quelques étapes pour y arriver, mais vous pouvez le faire.
Vous devez utiliser une zone de texte enrichi, plutôt que celle fournie avec WPF, que vous ne pouvez pas lier. Détails ici: http://michaelsync.net/2009/06/09/bindable-wpf-richtext-editor-with-xamlhtml-convertor
Une fois que vous avez cela, vous aurez un éditeur de texte enrichi que vous pouvez lier à un FlowDocument dans votre ViewModel.
Lorsque votre FlowDocument est créé, HookUp un gestionnaire pour l'Hyperlink.ClickEvent dans votre ViewModel:
est ici l'appel qui ajoute le gestionnaire à la FlowDoc
TheDocument.AddHandler(Hyperlink.ClickEvent,
new RoutedEventHandler(HandleHyperlinkClick));
//Here's the handler definition
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
//...
}
C'est la seule chose que j'ai jamais vue. Les FlowDocuments sont un peu étranges car ils sont en quelque sorte un type de données et une sorte d'élément visuel, donc dans un certain sens, il est mal vu de les avoir dans votre ViewModel, mais c'est la voie à suivre.
J'essaye ceci maintenant, mais rien ne se produit quand je clique sur un lien! Le curseur ne change même pas à une main ... aucune aide? – bluebit
Je pense que vous pourriez manquer l'appel AddHandler? J'ai changé la mise en forme, donc c'est plus facile à voir. –
Merci beaucoup! Cela a fonctionné, cependant quand je clique sur l'hyperlien l'URL montre deux fois! Qu'est-ce qui ne va pas? –
Vous trouverez beaucoup de scénarios dans lesquels il n'est pas possible d'utiliser la liaison de données wpf. Dans ces scénarios, vous pouvez créer un nouveau contrôle (par exemple hériter de RichTextBox) et fournir les propriétés de dépendance manquantes afin que vous puissiez utiliser la liaison de données. Toutefois, créer un nouveau contrôle pour gérer des scénarios simples est inefficace. Il n'est pas interdit d'implémenter du code dans le code de View derrière le fichier, ce qui est souvent plus logique que de créer un nouveau contrôle.
Un exemple concret comment cela peut se faire est illustré dans l'exemple ViewModel du projet:
WPF Application Framework (WAF)
- 1. Chargement d'un fichier html dans une zone de texte riche
- 2. Copie d'un "texte" d'émoticône à partir d'une riche zone de texte montrant l'image dans wpf
- 3. DataBind à une zone de texte dans WPF
- 4. Comment lier une commande dans WPF à un gestionnaire d'événement de double-clic d'un contrôle?
- 5. Pouvez-vous lier l'élément sélectionné dans une zone de liste à un objet distinct dans WPF?
- 6. Ajouter une URL de lien hypertexte absolu
- 7. Comment lier une zone de texte à un paramètre Model dans une vue fortement typée dans Asp.Net MVC?
- 8. WPF: Comment lier à une propriété imbriquée?
- 9. Appliquer une classe CSS à l'image dans asp: lien hypertexte?
- 10. Lier à une méthode dans WPF?
- 11. Exposant/indice dans le lien hypertexte dans WPF
- 12. Comment activer un lien hypertexte?
- 13. Comment lier une chaîne à doubler dans WPF?
- 14. WPF: Lier DisplayMemberPath dans une zone de liste déroulante à l'élément
- 15. Comment lier une zone de liste déroulante et un bouton de commande?
- 16. Zone de texte riche arrondi sélection de coin arrondi
- 17. Comment puis-je charger une page dans une fenêtre Frame dans WPF lorsque je clique sur un lien hypertexte
- 18. Comment ajouter une zone de texte dynamiquement?
- 19. WPF - DataTemplate/Value Converter pour le lien hypertexte dans TextBlock
- 20. Winforms .net 2.0: lier une zone de texte à une propriété parente
- 21. Comment lier la saisie semi-automatique dans une zone de texte à une table de base de données? C# 2.0
- 22. WPF: comment capturer le texte sélectionné dans une zone de texte incorporée dans ListView
- 23. Comment afficher un accent grave dans une zone de texte
- 24. Comment mettre un masque dans une zone de texte?
- 25. Comment lier du texte littéral à une requête SQLite?
- 26. Ajout d'un lien hypertexte à une table générée par PHP
- 27. Lier à une propriété animée (WPF)
- 28. Comment politico.com insère-t-il un lien hypertexte dans un texte copié?
- 29. emballage de texte dans WPF lien
- 30. composant éditeur d'image pour une utilisation dans l'application WPF riche
Comment le texte étant peuplé? –