J'ai un code écrit en C # WPF et j'ai du code de débogage, que je compilise actuellement sur ou désactivé pour le mode de débogage ou de sortie. Comment puis-je activer ou désactiver des contrôles d'interface utilisateur qui sont actuellement écrits dans ma XAML en fonction des définitions de préprocesseur C #? P>
3 Réponses :
Vous pouvez ajouter du code dans le constructeur qui active / désactive les éléments: strong>
Je pensais vraiment à la façon dont ils pourraient tout simplement exister en premier lieu, mais je suppose que cela fera.
Il n'est pas possible d'analyser XAML en fonction des symboles de préprocesseur. Je crois que c'est ce que vous cherchez?
Vous ne pouvez pas le faire sur les symboles de préprocesseur, mais XAML dispose d'un support pour la compilation de manière conditionnelle, en utilisant les fonctions de compatibilité de balisage. La réponse de Ptahmose est liée à une question qui relie un article sur ceux-ci. C'est aussi proche que vous obtiendrez.
Oui, le lien vous donne probablement ce dont vous avez besoin.
Pas vraiment utile - j'ai besoin de l'espace de noms d'un composant à modifier en fonction de la directive préprocesseur ... impossible de modifier un attribut XMLNS au moment de l'exécution!
Un autre cas d'utilisation commune peut être si j'ai un contrôle de l'utilisateur défini sur interne contre public - vous pouvez le faire facilement sur le côté C # avec une directive de préprocesseur - dans XAML, vous devez spécifier l'attribut x: classmodifier = "interne" - - Cela entre en vigueur lors de la génération de code / de la compilation - Comment puis-je faire ce travail avec une directive de préprocesseur dans XAML?
Je ne vois pas la réponse de Ptahmose que Ian se réfère, mais La réponse de BJ0 à
Il y a deux façons de faire cela. L'une utilise les directives de préprocesseur qui peuvent masquer des sections complètes du code ne l'exécutant que dans une version particulière. Ou vous pouvez utiliser l'attribut conditionnel pour bloquer facilement une méthode complète. http://www.csharpfriends.com/articles/getarticle.aspx?articleid=420
Voici une description de la différence entre les deux: http: // www .Thinkfarahead.com / 2007/09 / if-Debug-vs-conditionnel.html . Vous pouvez faire référence aux contrôles de votre code en fournissant un attribut X: Nom dans XAML et en mettant le code pour désactiver les commandes dans la section conditionnelle de votre code. p>
Mise à jour: Pour être plus claire mentionné x: Attribut de noms. p>
Ces liens concernent la compilation conditionnelle C #. Ils ne s'appliquent pas à xaml. La question était sur XAML.
Non Lire soigneusement: "Contrôles définis dans XAML" ... "sur la base des définitions de prépocesseur C #" Les commandes sont dans xaml. Il veut désactiver en C #
Il n'y a pas de directives de style préprocesseur pour XAML. Cependant, vous pouvez inclure et exclure des fichiers XAML basés sur la configuration de construction, vous fournissant un certain contrôle. Cela pourrait vous fournir une façon d'inclure des variations d'un fichier en fonction de la configuration de construction choisie. Bien sûr, l'inconvénient est que vous devriez conserver plusieurs versions d'un fichier. Cela pourrait être atténué par l'utilisation de templats T4 afin que les différents fichiers sont générés automatiquement selon la configuration sélectionnée. P>
Il n'y a pas de préprocesseur en C #, mais il existe des directives de préprocesseur qui sont traitées comme s'il y en avait un. msdn.microsoft.com/en-us/library /ed8yd1ha(v=vs.100).aspx
Dupliqué possible de compilation conditionnelle XAML
Oui. Voir Stackoverflow.com/a/19940157/492