J'ai un C'est le style que je veux pour plusieurs boîtes de texte, mais Ils contiennent tous des liaisons de texte différentes. La seule différence entre le Settre de texte régulier et le Settre de texte déclenché est que le déclencheur est que celui déclenché a est là une façon de faire ce style générique , tels que la modification de la propriété STYLEXBOX CODE> style qui formate un numéro si la case est coudée, mais laisse le nombre non formaté en whlie, il est édité.
strongformat = n2 code> dans la liaison. P>
strongformat code> de la liaison dans le Datatrigège? p>
5 Réponses :
Je me demande si vous pouviez peut-être avoir une propriété attachée sur les modifications pour contenir la valeur formatée (juste liée à la valeur d'édition réelle avec une application StringFormat), puis dans votre déclencheur hors de mise au point, vous pouvez définir la valeur d'édition. à cette propriété. p>
Cela entraînerait une liaison circulaire cependant, lorsque la modification n'a pas de concentration, car le WPF réagit dans de telles situations. P>
Malheureusement, c'est (à ma connaissance) pas possible. Une solution de contournement possible créerait de manière programmative un tel style à la volée, qui pourrait être encapsulée dans un markupextension code> qui prend le chemin comme paramètre constructeur. P>
La seule option que je vois qu'il y aurait de créer une propriété attachée pour le StringFormat et d'utiliser un multibelling. P>
Pas tout à fait ce que tu voulais, mais assez proche, je suppose ... p>
Vous avez plus d'informations sur cette question (type de duplicata) sur S.O.: P>
Modification des paramètres d'une liaison de texte d'une zone de texte via l'utilisation d'un style P>
Y a-t-il une façon de faire ce style générique, tel que changer la propriété StringFormat de la liaison dans le Datatriggigrigght? P>
hériter
style code> et nouvelle xaml deviendrait ceci: p>
xxx pré> voici la classe ... p>
xxx Pré> Notez que mon test était p>
- le Generic MainWindow LI>
- Impl inotifyPropertychangned li>
Quelquevalue code> propriété INPC LI>
- DataContext = Ceci LI>
- x: nom = ceci li> ul> blockQuote>
Je préférerais laisser mon style dans le XAML où je peux facilement y accéder pour y apporter des modifications. Cela ressemble à un cauchemar pour entretenir :)
Ceci est le style que je souhaite pour plusieurs boîtes de texte numérique, mais ils contiennent tous des liaisons de texte différentes CODE> ont fait valoir que cela vaut la peine. En tout état de cause, le lien de la réponse de David propose presque le même algorithme.
+1 pour une version de travail, bien que je préfère la propriété attachée indiquée dans le lien de David, car cela me permet de garder le reste de mon style dans le XAML
Ma tentative de résoudre ceci a pris fin avec un contrôle personnalisé plus une multi-liaison, des deux qui suggéraient ci-dessus. P>
Cela m'a permis d'utiliser le balisage comme celui-ci: P>
J'ai essayé de poster mon code mais je continue à obtenir une erreur sur "Code qui n'est pas correctement formaté en tant que code". P>
Je pense qu'il n'est pas possible de changer de propriétés d'une contraignante après avoir été appliquée. Au moins lorsque j'essaie de changer la propriété StringFormat d'une liaison existante, je reçois une invalidoPerationException disant que la liaison
ne peut pas être modifiée après avoir été utilisée. Code> Pour moi, il semble qu'il n'y aient aucun moyen de créer une nouvelle liaison chaque fois que la mise au point change.
Pensé à ce sujet, et considéré comme une solution de propriété code> de données code> ci-jointe dans laquelle le gestionnaire de changement de propriété attacherait des manutentionnaires GotFocus / LostFocus, etc. À la fin, je préfère avoir une zone de texte dérivée avec des propriétés
Data CODE> et
StringFormat CODE>, qui définirait la propriété code> texte code> en fonction de leurs valeurs et de l'état de mise au point actuel.