UWP RichTextBlock, SQLite et Binding

UWP RichTextBlock, SQLite et Binding - C#/.NET managed - Programmation

Marsh Posté le 26-07-2016 à 08:39:03    

Salut à tous,
Je cherchais sur le net des solutions pour faire un binding sur un RichTextBlock et tout ce que je trouve me dit que ce n'est pas possible sans bricolage.
Du coup je voudrais mettre les mains dans le cambouis mais pas dans tous les sens non plus !! (Je suis novice et très capable de faire une catastrophe dans le bazar!)
Mon but est de prendre le contenu mis en forme par l'utilisateur venant d'un RichEditBox, de le stocker dans ma base de donnée et de le restituer par binding dans un RichTextBlock avec le formatage défini à la base.
Est ce qu'il faut un champ spéciale dans la base SQLite ou est ce qu'un champs String suffit ?
Comment faire le binding dans le XAML pour remplir le RichTextBlock (il est dans un DataTemplate qui rempli une ListView) ?
Je continu à chercher de mon coté mais j'avoue que votre aide serait la bienvenue...
Merci

Reply

Marsh Posté le 26-07-2016 à 08:39:03   

Reply

Marsh Posté le 26-07-2016 à 09:06:52    

Pour la partie stockage/restauration : en Winform les objets RichTextBox avait une propriété "Rtf" qui te renvoyait une chaîne contenant les informations de formatage (au format Rtf évidemment).
Presque 15 ans plus tard j'ose imaginer qu'ils ont gardé un truc équivalent. Par contre il faut probablement aller chercher du côté de la propriété Document.
Ce genre de truc ça peut aider ou ça a disparu avec UAP ? https://msdn.microsoft.com/en-us/li [...] .100).aspx

 

Pour la partie Databinding je sais pas :o


Message édité par TotalRecall le 26-07-2016 à 09:08:27

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 26-07-2016 à 09:14:26    

Salut TotalRecall,
De ce que j'ai vu la propriété Document permet de sortir plusieurs format dont le HTML et le Rtf. Je pense que c'est le point d'entrée/sortie qu'il faut que j'utilise. Maintenant faut que je trouve comment stocker et convertir ma variable.
Je pensais traiter mon "texte" à la sortie de la base et le transformer en "Document" (ou en variable qui peut aller dans cette propriété) pour faire le binding plus "simplement"

Reply

Marsh Posté le 26-07-2016 à 11:36:23    

Alors de ce que je trouve, le plus simple serait d'avoir un champ Blob dans ma base et de transformer ma RichEditBox en fichier rtf et le stocker dedans.  
Je créé ma base à partir de class C# mais est il possible de créer un champ Blob de cette manière ?
Je continue ma recherche dans ce sens...

Reply

Marsh Posté le 26-07-2016 à 11:43:12    

Le RTF tu le récupères en string il me semble, donc un varchar suffit, pas un BLOB.

Message cité 1 fois
Message édité par TotalRecall le 26-07-2016 à 11:43:21

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 26-07-2016 à 13:19:20    

TotalRecall a écrit :

Le RTF tu le récupères en string il me semble, donc un varchar suffit, pas un BLOB.


Effectivement mais c'est un peu plus tordu qu'avant (sinon ce serait pas Windows !!)

 

J'ai commencé par trouver cet exemple :
https://msdn.microsoft.com/fr-fr/wi [...] h-edit-box

 

Cet exemple permet de créer et de retrouver des fichiers RTF de base.

 

J'ai transformé l'idée en utilisant la fonction suivante :

Code :
  1. string monText;
  2. editor.Document.GetText(Windows.UI.Text.TextGetOptions.FormatRtf, out monText);
  3. texte.Text = monText;
 

(texte est un TextBlock, editor est mon RichEditBox)
 La variable monTexte contient donc mon texte en format RTF, que je vais donc stocker facilement dans ma base.

 

Pour retrouver mon texte formaté je fais le chemin inverse :

Code :
  1. editor.Document.SetText(Windows.UI.Text.TextSetOptions.FormatRtf, texte.Text);


La je pars de mon TextBlock mais c'est juste pour le test !!

 

Mon problème qui restait était le Binding...
Et la une petite larme a commencé à couler !! Il n'y a pas moyen d'accéder au contenu de la RichEditBox pour y placer quelque chose par le Binding !!
C'était sans compter sur un petit malin qui a eu le même problème que moi...

 

A cette adresse http://stackoverflow.com/questions [...] 5#26549205 j'ai trouvé une RichEditBox amélioré qui comporte une propriété RtfText que l'on peut toucher par le binding et qui (cerise sur le gâteau !!) transforme le RTF pour qu'il s'affiche correctement formaté !

 

Et bim  :sol:  ! Problème résolu !! J'ai posté un peu vite mais je suis content de partager ça avec vous ! (ça pourra peut être en aider un autre !)


Message édité par NicoLag le 26-07-2016 à 14:04:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed