¿Existe alguna manera fácil de usar el mismo símbolo de compilación condicional que estoy usando para mi código C# en mis archivos xaml?Compilación condicional XAML
Respuesta
Existe algún soporte para conditional compilation in XAML. Sin embargo, no es lo mismo que en el código C#. El truco es usar AlternateContent
con Requires
contra algo marcado Ignorable. Al hacer esto, puede tener porciones de su xaml no disponibles en función de las condiciones, y activar o desactivar.
Probé la otra solución mencionada, y compila y funciona, aunque Visual Studio le dará un montón de errores, y para mí la solución parece usar mucho tiempo en el hilo de la interfaz de usuario, ambos de los cuales 'T como.
La mejor solución que implementé en su lugar fue que puse toda la lógica condicional en el código detrás del control. Como no mencionas tu intención, esto podría ser lo que estabas buscando.
Quería que un símbolo de compilación condicional afectara a los colores de mi aplicación, pero también se puede imaginar la misma solución para otros estilos o incluso plantillas diferentes, o que puede usarse con la lógica if-else usual de símbolos de compilación.
<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}" />
El código subyacente de este manual se pueden crear mediante la colocación de un MainStyle.xaml.cs en su aplicación y utilizar de esta manera:
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
}
}
}
Es importante señalar que si solo referencia los valores no configurados de mi código XAML, y esto también funciona para StaticResource
s, aunque al constructor solo se le llama una vez. Supongo que sobrescribir/usar más métodos de diccionarios de recursos también funcionaría, pero esto ya resolvió mi problema, así que no lo intenté.
- 1. Compilación condicional del preprocesador en XAML
- 2. Condicional XAML (WPF)
- 3. Compilación condicional en Scala
- 4. compilación condicional de Golang
- 5. compilación condicional en Go
- 6. compilación condicional en OCaml
- 7. Compilación condicional en Python
- 8. C++ compilación condicional
- 9. Compilación condicional al usar ARC
- 10. Compilación condicional de métodos genéricos
- 11. La compilación condicional no funciona
- 12. Compilación condicional en CoffeeScript/UglifyJS
- 13. compilación condicional para armv6 y armv7
- 14. msbuild, definiendo símbolos de compilación condicional
- 15. ¿Cómo configuro una variable de compilación condicional?
- 16. ¿La compilación condicional está desactivada en Razor?
- 17. Alternativas a la compilación condicional en C#
- 18. Compilación condicional usando caracteres de tipo Boost
- 19. Compilación condicional en un documento LaTeX
- 20. Pregunta rápida sobre la compilación condicional (ifndef)
- 21. Los símbolos de compilación condicional no están definidos
- 22. Compilación condicional en C++ basada en el sistema operativo
- 23. El uso de símbolos de compilación condicional en vistas MVC
- 24. Delphi - Cómo usar más valores definidos en la compilación condicional
- 25. ¿Cómo hacer una compilación condicional basada en nombres de destino?
- 26. Advertencia de compilación condicional desactivada al mezclar razor y javascript
- 27. C# - Visual Studio 2008 capaz de compilación condicional?
- 28. Compilación condicional basada en una directiva de compilación en Delphi 2009
- 29. ¿Es posible usar símbolos de compilación condicional en eventos de compilación VS?
- 30. ASP.NET - Web.config condicional
Reed, ¿podría publicar al menos algún código/información relevante? Las respuestas no deben contener * solo * un enlace. – NullUserException
Estoy de acuerdo. Tenía problemas para entender cómo el enlace era útil. –
El enlace ahora está roto. –