Ich habe einige Code in C# WPF geschrieben, und ich habe einige Code zum Debuggen, die ich derzeit für Debug oder Release-Modus kompilieren oder deaktivieren. Wie kann ich UI-Steuerelemente, die derzeit in meinem XAML basierend auf C# -Präprozessordefinitionen geschrieben werden, aktivieren oder deaktivieren?Präprozessor bedingte Kompilierung in XAML
Antwort
Sie können einen Code im Konstruktor hinzufügen, die aktiviert/deaktiviert die Elemente:
public MainWindow()
{
InitializeComponent();
#if DEBUG
button1.IsEnabled = false;
#endif
}
Ich habe wirklich darüber nachgedacht, wie sie überhaupt nicht existieren können, aber ich denke, das wird reichen. – Puppy
Es ist nicht möglich, XAML basierend auf Präprozessorsymbolen zu analysieren. Ich glaube, das ist es wonach Sie suchen? –
Sie können dies nicht auf Präprozessorsymbolen tun, aber Xaml unterstützt die bedingte Kompilierung von Abschnitten unter Verwendung der Markup-Kompatibilitätsfunktionen. ptahmoses Antwort verweist auf eine Frage, die auf einen Artikel über diese verweist. Es ist so nah wie du kommst. –
Es gibt zwei Möglichkeiten, dies zu tun. Man verwendet die Präprozessordirektiven, die ganze Codeabschnitte maskieren können, die nur in einem bestimmten Build ausgeführt werden. Oder Sie können das bedingte Attribut verwenden, um eine vollständige Methode einfach auszublenden. http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=420
Hier ist eine Beschreibung des Unterschieds zwischen den beiden: http://www.thinkfarahead.com/2007/09/if-debug-vs-conditional.html. Sie können auf die Steuerelemente in Ihrem Code verweisen, indem Sie ein x: Name-Attribut in xaml angeben und den Code setzen, um die Steuerelemente im bedingten Abschnitt Ihres Codes zu deaktivieren.
Aktualisiert: um klarer zu sein, erwähnt x: Name Attribut.
Diese Links betreffen die bedingte C# -Kompilierung. Sie sind nicht auf Xaml anwendbar. Die Frage war über Xaml. –
Nicht sorgfältig gelesen: "Steuerelemente in XAML definiert" ... "basierend auf C# Pre-Prozessor-Definitionen" Die Steuerelemente sind in XAML. Er möchte in C# deaktivieren – basarat
Es gibt keine Präprozessor-Anweisungen für XAML. Sie können jedoch XAML-Dateien basierend auf der Build-Konfiguration ein- und ausschließen, wodurch Sie eine gewisse Kontrolle erhalten. Dies könnte Ihnen eine Möglichkeit bieten, Variationen einer Datei abhängig von der gewählten Build-Konfiguration einzuschließen. Der Nachteil ist natürlich, dass Sie mehrere Versionen einer Datei verwalten müssen. Dies könnte durch die Verwendung von T4 templates gemildert werden, so dass die verschiedenen Dateien automatisch entsprechend der ausgewählten Konfiguration generiert werden.
- 1. XAML bedingte Kompilierung
- 2. Bedingte Kompilierung in Go
- 3. Bedingte Kompilierung in OCaml
- 4. Bedingte Kompilierung in Python
- 5. Bedingte Java-Kompilierung
- 6. C++ bedingte Kompilierung
- 7. Golang bedingte Kompilierung
- 8. Bedingte Textbindung XAML
- 9. Bedingte Kompilierung ganzer Namespaces - C#
- 10. Kompilierung von XAML-Dateien (WPF)
- 11. Bedingte Kompilierung in einem LaTeX-Dokument
- 12. Delphi bedingte Kompilierung in uses-Klausel
- 13. Vorteile von bedingtem Präprozessor über bedingte Anweisungen
- 14. Bedingte Kompilierung mit Boost type-traits
- 15. Boost.Build bedingte Bibliothek Kompilierung pro Projekt
- 16. ReSharper - Bedingte Kompilierung XML Kommentar Fehler
- 17. Bedingte Kompilierung in C++ basierend auf dem Betriebssystem
- 18. JavaScript Fehler: bedingte Kompilierung ist in MVC2 deaktiviert Ansicht
- 19. Bedingte Kompilierung basierend auf einer Compiler-Direktive in Delphi 2009
- 20. Wie verwende ich die bedingte Kompilierung mit `cfg` und Cargo?
- 21. Bedingte Kompilierung mit ifndef und || Fängt keinen zweiten Fall ein
- 22. Präprozessor-Konstante Auswertung
- 23. Präprozessor-Anweisungen in C#
- 24. Xcode & Präprozessor ##
- 25. GCC Präprozessor
- 26. C++ - Präprozessor
- 27. Präprozessor definiert
- 28. Wie schreibe ich bedingte Importanweisungen in QML?
- 29. Sass importiert ohne Kompilierung
- 30. Kompilierung
In C# gibt es keinen Präprozessor, aber es gibt Präprozessordirektiven, die so verarbeitet werden, als gäbe es einen. http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx –
mögliche Duplikate von [XAML Conditional Compilation] (http://stackoverflow.com/questions/1213576/xaml- conditional-compilation) –