XAML 内で "#if" ディレクティブのようなものを使用するにはどうすればよいですか。Bing Maps コントロールの資格情報キーを宣言しましたが、ライブでないときはキーをオフにしたいと考えています。キーはリソース ディクショナリにあります。デバッグでこれを無効にするにはどうすればよいですか?
2 に答える
私はこれをテストしていませんが、これまたはそのようなものが機能するのだろうかと思います。
マップの DataContext が何であれ (ビュー モデルまたはそれ以外)、このパブリック プロパティを宣言できます。
public CredentialsProvider MyCredentialsProvider
{
#if DEBUG
return null;
#else
return new ApplicationIdCredentialsProvider(MyResources.MyCredentialsKey);
#endif
}
( MSDNは、 ApplicationIdCredentialsProviderを使用する必要があると述べています。)
CredentialsProviderは依存関係プロパティであるため、このプロパティにバインドするだけです。
<m:Map CredentialsProvider="{Binding MyCredentialsProvider}"/>
私は最近、ビルドが Silverlight であるか WPF であるかに基づいて Xaml を表示または非表示にする方法を説明したブログ記事「クロス プラットフォーム アプリケーションでの Xaml 要素の可視性を管理する」を投稿しました。
これは基本的に、次のように適用すると要素を非表示 (または表示) する添付プロパティを使用しました。
local:FrameworkVisibilityManager.VisibleIn="Silverlight"
// OR
local:FrameworkVisibilityManager.VisibleIn="Wpf"
残念ながら、構成に基づいて Xaml を除外する方法はありませんが、構成に基づいて Visibility などのプロパティを変更することはできます。
上記の方法を使用すると、DebugCredentialsProvider という名前の添付プロパティを作成できます。これは、デバッグの場合にのみ資格情報を Bing Maps コントロールに適用します。