Gibt es eine einfache Möglichkeit, das gleiche bedingte Kompilierungssymbol, das ich für meinen C# -Code verwende, in meinen xaml-Dateien zu verwenden?XAML bedingte Kompilierung
Antwort
Es gibt Unterstützung für conditional compilation in XAML. Es ist nicht dasselbe wie in C#, Code, obwohl. Der Trick besteht darin, AlternateContent
mit Requires
gegen etwas mit der Markierung Ignorable zu verwenden. Auf diese Weise können Sie tatsächlich Teile Ihres XAML aufgrund von Bedingungen nicht verfügbar haben und ein- oder ausschalten.
Ich habe versucht, die andere erwähnte Lösung, und es kompiliert und funktioniert, auch wenn Visual Studio Ihnen viele Fehler gibt, und für mich scheint die Lösung eine Menge Zeit auf dem UIhread zu verwenden, die beide ich nicht Ich mag es nicht.
Die beste Lösung, die ich stattdessen implementierte, war, dass ich die gesamte bedingte Logik in den Code hinter dem Steuerelement legte. Da Sie Ihre Absicht nicht erwähnen, könnte dies das sein, was Sie gesucht haben.
Ich wollte, dass ein bedingtes Kompilierungssymbol Farben in meiner Anwendung beeinflusst, aber Sie können sich auch die gleiche Lösung für andere unterschiedliche Stile oder sogar Vorlagen vorstellen, oder dass diese stattdessen mit der üblichen if-else-Logik verwendet werden kann von Kompilierungssymbolen.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class ="MyApp.Style.MainStyle">
<!--Version1 -->
<Color x:Key="AbMainColor">#068C00</Color>
<Color x:Key="AbLighterMainColor">#5EBD50</Color>
<Color x:Key="AbDarkerMainColor">DarkGreen</Color>
<Color x:Key="MainColor" />
<Color x:Key="LighterMainColor" />
<Color x:Key="DarkerMainColor" />
<!-- Version2 -->
<Color x:Key="OtherRedColor">#EF0000</Color>
<Color x:Key="LighterRedColor">#e62621</Color>
<Color x:Key="DarkerRedColor">#EF0000</Color>
<SolidColorBrush x:Key="MainBrush" Color="{DynamicResource MainColor}" />
<SolidColorBrush x:Key="LighterMainBrush" Color="{DynamicResource LighterMainColor}" />
<SolidColorBrush x:Key="DarkerMainBrush" Color="{DynamicResource DarkerMainColor}" />
Der Code-behind für diese manuell, indem ein MainStyle.xaml.cs in Ihrer Anwendung erstellt werden kann und es wie folgt verwenden:
using System.Windows;
namespace MyApp.Style
{
partial class MainStyle : ResourceDictionary
{
public MainStyle()
{
InitializeComponent();
#if VERSION2
this["MainColor"] = this["OtherRedColor"];
this["LighterMainColor"] = this["LighterRedColor"];
this["DarkerMainColor"] = this["DarkerRedColor"];
#elif VERSION1
this["MainColor"] = this["AbMainColor"];
this["LighterMainColor"] = this["AbLighterMainColor"];
this["DarkerMainColor"] = this["AbDarkerMainColor"];
#endif
}
}
}
Wichtig zu beachten ist, dass wenn nur die nicht gesetzten Werte von meinem XAML-Code referenziert werden und dies auch für StaticResource
s funktioniert, obwohl der Konstruktor nur einmal aufgerufen wird. Ich denke, das Überschreiben/Verwenden von mehr Ressourcenwörterbüchern würde auch funktionieren, aber das hat mein Problem bereits gelöst, also habe ich es nicht versucht.
- 1. Präprozessor bedingte Kompilierung in XAML
- 2. Bedingte Kompilierung in Go
- 3. Bedingte Kompilierung in OCaml
- 4. C++ bedingte Kompilierung
- 5. Bedingte Java-Kompilierung
- 6. Bedingte Kompilierung in Python
- 7. Golang bedingte Kompilierung
- 8. Bedingte Textbindung XAML
- 9. Bedingte Kompilierung ganzer Namespaces - C#
- 10. Kompilierung von XAML-Dateien (WPF)
- 11. Bedingte Kompilierung mit Boost type-traits
- 12. Boost.Build bedingte Bibliothek Kompilierung pro Projekt
- 13. ReSharper - Bedingte Kompilierung XML Kommentar Fehler
- 14. Bedingte Kompilierung in einem LaTeX-Dokument
- 15. Delphi bedingte Kompilierung in uses-Klausel
- 16. Bedingte Kompilierung mit ifndef und || Fängt keinen zweiten Fall ein
- 17. Bedingte Kompilierung in C++ basierend auf dem Betriebssystem
- 18. Wie verwende ich die bedingte Kompilierung mit `cfg` und Cargo?
- 19. JavaScript Fehler: bedingte Kompilierung ist in MVC2 deaktiviert Ansicht
- 20. Bedingte Kompilierung basierend auf einer Compiler-Direktive in Delphi 2009
- 21. Kompilierung
- 22. Bedingte Bindung?
- 23. Bedingter Kompilierung von generischen Methoden
- 24. JIT-Kompilierung
- 25. Makefile Kompilierung
- 26. Bedingte Kompilierung, wenn in Simulator läuft im Gegensatz zu auf einem Gerät
- 27. Ändern Sie den Namen der exe abhängig vom Symbol für die bedingte Kompilierung
- 28. Wie würde man eine bedingte Kompilierung mit Rust-Projekten erreichen, die Doctests haben?
- 29. Falsch ausgerichtete Schaltfläche nach der Kompilierung
- 30. Wie schreibe ich bedingte Anweisungen in WPF?
Reed, können Sie bitte mindestens einige relevante Codes/Informationen posten? Antworten sollten nicht * nur * einen Link enthalten. – NullUserException
Ich stimme zu. Ich hatte Probleme zu verstehen, wie der Link nützlich war. –
Die Verbindung ist jetzt unterbrochen. –