1

如何在 XAML 中使用类似“#if”指令的东西。我已经为我的 Bing 地图控件声明了一个凭据密钥,并且我想在我不在的时候关闭该密钥。密钥在资源字典中。如何在调试中禁用它?

4

2 回答 2

1

我还没有测试过这个,但我想知道这个或类似的东西是否会起作用。

无论地图的 DataContext 是什么(视图模型或其他),您都可以声明此公共属性。

public CredentialsProvider MyCredentialsProvider
{
#if DEBUG
    return null;
#else
    return new ApplicationIdCredentialsProvider(MyResources.MyCredentialsKey);
#endif
}

MSDN说我们应该使用ApplicationIdCredentialsProvider。)

然后你可以简单地绑定到这个属性,因为CredentialsProvider是一个依赖属性

<m:Map CredentialsProvider="{Binding MyCredentialsProvider}"/>
于 2012-05-03T15:17:27.010 回答
1

我最近发布了一篇博客文章,管理跨平台应用程序中 Xaml 元素的可见性,其中描述了如何根据构建是 Silverlight 还是 WPF 来显示或隐藏 Xaml。

这基本上使用了一个附加属性,当应用如下时会隐藏(或显示)一个元素:

local:FrameworkVisibilityManager.VisibleIn="Silverlight"

// OR 

local:FrameworkVisibilityManager.VisibleIn="Wpf"

不幸的是,没有办法根据配置排除 Xaml,但您当然可以根据配置更改诸如可见性之类的属性。

使用上述方法,您可以创建一个名为 DebugCredentialsProvider 的附加属性,该属性仅在 Debug 中将凭据应用于 Bing Maps 控件。

于 2012-05-03T15:21:48.647 回答