Simplification de la liaison de données WPF RichTextBox
La liaison des données à la propriété Document
d'un WPF RichTextBox
est souvent considérée comme un défi. Bien que des contrôles RichTextBox
personnalisés ou des méthodes proxy soient parfois suggérés, une solution plus élégante existe : utiliser une propriété de dépendance attachée.
L'approche des biens attachés
Cette méthode exploite une propriété de dépendance attachée, DocumentXaml
, pour lier de manière transparente le document de RichTextBox
à une propriété de chaîne dans votre modèle de données. Cela permet une liaison propre et intuitive, similaire à la liaison d'autres contrôles de texte :
<code class="language-xml"><TextBox Text="{Binding FirstName}"></TextBox> <TextBox Text="{Binding LastName}"></TextBox> <RichTextBox local:RichTextBoxHelper.DocumentXaml="{Binding Autobiography}"></RichTextBox></code>
Détails de mise en œuvre
La classe RichTextBoxHelper
gère la propriété attachée. Lorsque DocumentXaml
est défini, il analyse la chaîne XAML ou RTF, créant un FlowDocument
. À l’inverse, les modifications apportées au FlowDocument
mettent à jour la valeur de la propriété DocumentXaml
. Une implémentation simplifiée pourrait ressembler à ceci :
<code class="language-csharp">public class RichTextBoxHelper : DependencyObject { public static string GetDocumentXaml(DependencyObject obj) { /* ... Getter implementation ... */ } public static void SetDocumentXaml(DependencyObject obj, string value) { /* ... Setter implementation ... */ } public static readonly DependencyProperty DocumentXamlProperty = DependencyProperty.RegisterAttached("DocumentXaml", typeof(string), typeof(RichTextBoxHelper), new PropertyMetadata(null, OnDocumentXamlChanged)); private static void OnDocumentXamlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { /* ... Handle changes ... */ } }</code>
Au-delà de XAML : gestion de RTF et XamlPackage
Cette technique ne se limite pas au XAML. Vous pouvez l'adapter pour gérer le RTF ou le format XamlPackage
plus robuste. XamlPackage
offre des avantages tels que l'inclusion de ressources en ligne, ce qui en fait un choix préférable au RTF pour les documents complexes.
Conclusion
Cette approche des propriétés attachées simplifie considérablement RichTextBox
la liaison des données dans WPF. Il évite des solutions de contournement fastidieuses, offrant une solution plus propre et plus maintenable pour intégrer des capacités d'édition de texte enrichi dans vos applications liées aux données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!