Comment l'analyseur XAML convertit-il la chaîne "Red" dans Foreground = "Red" en SolidColorBrush? Bien que je sache que les types ont System.ComponentModel.TypeConverter défini, je pense que l'analyseur XAML de WPF utilise toujours ceux-ci pour convertir la chaîne à la brosse. Existe-t-il des API XAML en dehors de XamlReader.Load (qui veut une chaîne xml valide) que je pourrais utiliser pour analyser une seule chaîne comme si elle avait un attribut pour une certaine propriété?Analyser manuellement la chaîne en tant qu'attribut XAML
Répondre
Je crois que vous pouvez profiter de cela vous-même. XamlReader connaît le type de cible (le type de la propriété à laquelle la chaîne doit être appliquée). Vous devez enregistrer un TypeConverter pour le type de cette propriété.
EDIT cela fonctionnera pour vous quand il vient à SolidColorBrush
:
var colorString = ...;
var converter = new System.Windows.Media.BrushConverter();
var brush = (SolidColorBrush)converter.ConvertFromString(colorString);
semble à la recherche, il SolidColorBrush
dans le réflecteur .NET, la magie qui fait désérialisation au sein XamlReader
utilise des API internes autour de types connus. Je ne suis pas sûr que vous puissiez enregistrer vos propres types pour gérer cela.
L'analyseur XAML (pour WPF) utilise réellement le convertisseur de type de la propriété ou du type de propriété spécifié. Il y a quelques raccourcis codés en dur mais ils sont pour la performance et ne changent pas la sémantique. Un analyseur, utilisant simplement des informations d'attribut, peut dupliquer la sémantique de l'analyseur (ce qui est, par exemple, ce que font Blend et Cider).
Il n'y a pas d'API qui convertira une valeur exactement comme le ferait XAML principalement parce que beaucoup de types convertis ne fonctionnent que dans le contexte d'une analyse XAML. Par exemple, les convertisseurs de type peuvent se référer aux espaces de noms définis dans le fichier XAML (qui varie en fonction de l'emplacement de la valeur dans le fichier XML) ainsi que d'autres bases URI de base d'informations ambiantes pour le fichier. Ceux-ci ne sont vraiment applicables que lorsque le fichier XAML est en cours d'analyse. Le plus proche que vous pouvez trouver est de demander le descripteur de propriété pour la propriété à partir du descripteur de type et en utilisant la propriété Convertisseur. Cela va scanner les attributs appropriés pour créer le convertisseur de type correct.
- 1. expression régulière pour analyser la chaîne d'option
- 2. En Java, comment analyser XML en tant que chaîne au lieu d'un fichier?
- 3. Analyser plusieurs doubles d'une chaîne en C#
- 4. Comment analyser une chaîne en JavaScript?
- 5. Méthode la plus optimale pour analyser la chaîne querystring au sein d'une chaîne en C#
- 6. Format/analyser une chaîne Vb
- 7. JPG en tant qu'icône de fenêtre utilisant XAML?
- 8. Où trouver le thème WPF Classic en tant que XAML?
- 9. Comment définir manuellement la valeur de départ en tant que 1000 dans MySQL
- 10. Obtenir optarg en tant qu'objet chaîne C++
- 11. Comment récupérer la chaîne de ressources pour affecter à la section WPF ressources en XAML
- 12. Analyser la chaîne en entier (en enfer ou en haute mer)
- 13. Comment puis-je analyser une chaîne HTML en Java?
- 14. Comment analyser une chaîne de date HTTP en Python?
- 15. Comment analyser une chaîne avec 0
- 16. Analyser une chaîne XML dans MySQL
- 17. chaîne php analyser avec regard vers l'avenir
- 18. regex/php: analyser les temps à partir de la chaîne?
- 19. Analyser une chaîne URL dans Ruby
- 20. Analyser la chaîne à la date avec un format différent en Java
- 21. Comment analyser la sous-chaîne entre le dernier ensemble de parenthèses dans la chaîne de ruby
- 22. Exécuter une chaîne en tant que commande en python
- 23. Comment analyser les dates avec la chaîne -0400 timezone en Python?
- 24. Analyser en cours d'exécution .NET App pour la valeur de chaîne
- 25. BigDecimal évalué en tant que chaîne dans Velocity, Struts2
- 26. WebMethod renvoie en tant que chaîne (sans balise <? Xml)
- 27. Nhibernate ValueType Collection en tant que chaîne délimitée dans DB
- 28. flex obtenir le contenu de arraycollection en tant que chaîne
- 29. Render Contrôle de l'utilisateur en tant que modèle de chaîne
- 30. Est-ce que SqlDataReader stocke tout en tant que chaîne?
Oui, c'est comme ça que je le fais actuellement. Mais j'ai remarqué que XamlReader n'utilise pas toujours les TypeConverters pour analyser la chaîne. Le XamlReader doit donc avoir plus de logique pour l'analyse en dehors de ces convertisseurs de type. Ma question est-elle exposée en tant qu'API quelque part? – bitbonk