내 xaml 파일에서 내 C# 코드에 사용하는 것과 동일한 조건부 컴파일 기호를 쉽게 사용할 수 있습니까?XAML 조건부 컴파일
27
A
답변
22
conditional compilation in XAML에 대한 일부 지원이 있습니다. 그것은 C#, 코드에서와 같지 않습니다. 트릭은 AlternateContent
과 Requires
을 사용하고 플래그가 Ignorable 인 것에 대해 사용하는 것입니다. 이렇게하면 조건에 따라 xaml의 일부를 사용할 수 없게되고 실제로 켜거나 끌 수 있습니다.
1
Visual Studio에서 많은 오류를 줄지 만 컴파일 및 작동하지만 다른 솔루션은 UI 스레드에서 많은 시간을 사용하는 것처럼 보입니다. 좋아해.
대신 구현 한 최선의 해결책은 컨트롤의 코드 뒤에 모든 조건부 로직을 넣는 것입니다. 당신이 당신의 의도를 언급하지 않았 으면, 이것은 당신이 찾고 있었던 것일 수도 있습니다.
내 응용 프로그램의 색상에 조건부 컴파일 기호가 영향을 주길 원하지만 다른 다른 스타일이나 템플릿에도 동일한 해결책을 사용하거나 일반적인 if-else 논리와 함께 사용할 수 있다고 상상해보십시오. 컴파일 기호 중.
<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}" />
이에 대한 수동으로 응용 프로그램에서 MainStyle.xaml.cs을 배치하고 같이 사용에 의해 생성 될 수있는 코드 숨김 :
주의 할
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
}
}
}
중요한 것입니다 내 XAML 코드에서 설정되지 않은 값만 참조하고이 경우에도 StaticResource
에 대해 작동하지만 생성자는 한 번만 호출됩니다. 덮어 쓰기/더 많은 리소스 사전을 사용하는 방법도 효과가있을 것이라고 생각합니다. 그러나 이미 시도 했으므로 문제가 해결되었습니다.
관련 문제
- 1. 조건부 컴파일
- 2. limits.h의 조건부 컴파일 문
- 3. 조건부 컴파일 파이썬
- 4. xcode 조건부 컴파일
- 5. 델피 조건부 컴파일
- 6. 엑스 코드는 - 조건부 컴파일
- 7. Xcode의 조건부 컴파일
- 8. ipad와 아이폰 사이의 조건부 컴파일
- 9. .h 및 .cpp의 조건부 컴파일
- 10. 집에서 일할 수있는 조건부 컴파일
- 11. GWT - 브라우저 기반 조건부 컴파일
- 12. Flash Builder : 조건부 컴파일 - app.xml
- 13. 조건부 컴파일 기호를 동적으로 설정합니다.
- 14. C#에서 #include (조건부 컴파일)
- 15. UI 구성 요소 및 조건부 컴파일러 조건부 컴파일
- 16. Boost.Build 조건부 라이브러리 컴파일 per project
- 17. 부스트 타입 - 특성을 사용한 조건부 컴파일
- 18. Delphi 2009의 컴파일러 지시문을 기반으로하는 조건부 컴파일
- 19. 운영체제 기반 C++의 조건부 컴파일
- 20. ReSharper에서 - 조건부 컴파일 XML 주석 오류
- 21. 조건부 컴파일 기호에 따라 exe 이름 변경
- 22. Visual Studio (C#)의 조건부 컴파일
- 23. 조건부 컴파일 (ifndef)에 관한 간단한 질문
- 24. VC++ 컴파일러 버전에 따른 조건부 컴파일
- 25. Xcode Objective-c 컴파일 시간 조건부
- 26. app.config 파일에서 조건부 컴파일 기호 구성
- 27. XAML
- 28. XAML
- 29. XAML
- 30. 어디서 Delphi Prism을위한 조건부 컴파일 상수를 정의 할 수 있습니까?
리드, 적어도 관련 코드/정보를 게시 할 수 있습니까? 대답에는 * 단지 * 링크가 없어야합니다. – NullUserException
동의합니다. 링크가 어떻게 유용했는지 이해하는 데 문제가있었습니다. –
링크가 끊어졌습니다. –