私の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. 条件付きXAML(WPF)
- 2. Fortran 2008 - 条件付きコンパイル
- 3. 条件付きコンパイル - チェックスキーム
- 4. 条件付きコンパイルGo
- 5. データベースプロジェクトの条件付きコンパイル
- 6. Xcodeの条件付きコンパイル
- 7. Scalaの条件付きコンパイル
- 8. iOS - 条件付きコンパイル(xcode)
- 9. XAML内部の条件付きロジック
- 10. bash whileループの条件付きコンパイル
- 11. Swiftでの条件付きコンパイル
- 12. Flash Builder条件付きコンパイル変数
- 13. 条件付きコンパイルの質問
- 14. try catchの条件付きコンパイル
- 15. 文中の条件付きコンパイル
- 16. 条件付き
- 17. 条件付きBASEDON XAMLでスタイルを考える
- 18. 条件付きXAMLによりXBFジェネレータエラーが発生する
- 19. UWPのクラスに基づく条件付きxamlレイアウト
- 20. Silverlight 3およびSilverlight 4条件付きxaml
- 21. 条件付きガード条項
- 22. SSIS条件付きスプリット条件設定
- 23. 条件付き書式:条件
- 24. ケース、条件付き条件を選択
- 25. MVC検索条件付きの条件
- 26. 条件付きコンパイルのためのLaTeXマクロの書き方は?
- 27. 条件付きモジュールエイリアシング
- 28. 条件付きロックリソース
- 29. 条件付きチャプターイテレーター
- 30. は条件付き
リード、少なくともいくつかの関連するコード/情報を投稿してください。答えにはただのリンクしか含めるべきではありません。 – NullUserException
私は同意します。リンクがどのように役立ったかを理解する問題がありました。 –
リンクが壊れています。 –