2012-02-07 5 views
1

リリース構成を使用してアプリケーションを構築するときに、プロパティをtrueに設定する必要があります。それ以外の場合は、falseに設定します。XAMLのソリューション構成にバインドする方法は?

<Window Topmost="{Binding IsReleaseBuild}"> 

通常、私はちょうどDEBUG定数をチェックするプリプロセッサディレクティブ#if#endifを使用しますが、これはXAMLで可能ではありません。心の中で次のように私が何かを持っています。

これを処理する最善の方法は何ですか?

Most likelyデータコンテキストでバインドできる値を作成できます。しかし、私は再利用可能なソリューションを作成することを好むでしょう。

コードビハインドファイルでプリプロセッサディレクティブを使用することもできますが、クリーナーソリューションがあるかどうかは疑問でした。

答えて

1

あなたは単にこのようなことをすることができます。あなたが投稿したリンクのソリューションに基づいています。あなたがMVVMを使用している場合

public bool IsReleaseBuild 
{ 
    get { return MyStaticClass.IsAssemblyDebugBuild(Assembly.GetExecutingAssembly()); } 
} 

単にあなたのBaseClassPropertyを入れて、それがすべてView/ViewModelsが使用する可能性があります。

このように見える可能性があります。

public class BaseViewModel : ObservableObject 
{ 
    public Boolean IsReleaseBuild 
    { 
     get 
     { 
      ... 
     } 
    } 
} 

私は自分のアプリケーションがVisual Studio Design Modeに現在あるかどうかを把握する似たような操作を行います。添付プロパティについて

public class BaseViewModel : ObservableObject 
{ 
    private static Nullable<Boolean> _isInDesignMode; 

    public Boolean IsInDesignMode 
    { 
     get 
     { 
      if (!_isInDesignMode.HasValue) 
      { 
       DependencyProperty property = DesignerProperties.IsInDesignModeProperty; 

       _isInDesignMode 
        = (bool)DependencyPropertyDescriptor 
            .FromProperty(property, typeof(FrameworkElement)) 
            .Metadata.DefaultValue; 
      } 

      return _isInDesignMode.Value; 
     } 
    } 
} 
1

どのように?

public sealed class Solution 
{ 
    public static readonly DependencyProperty IsReleaseBuildProperty = 
     DependencyProperty.RegisterAttached(
     "IsReleaseBuild", 
     typeof(bool), 
     typeof(Solution), 
     new FrameworkPropertyMetadata(
#if DEBUG 
      false 
#else 
      true 
#endif 
      )); 

    public static bool GetIsReleaseBuild(DependencyObject source) 
    { 
     return (bool)source.GetValue(IsReleaseBuildProperty); 
    } 
} 

そして、あなたのXAMLで:

<Window Topmost="{Binding RelativeSource={RelativeSource Self} Path=util:Solution.IsReleaseBuild}" /> 
関連する問題