2012-05-03 43 views
1

如何使用XAML內的「#if」指令。我已經爲Bing Maps控件聲明瞭一個憑證密鑰,並且當我不活時,我想關閉該密鑰。關鍵在於資源字典。如何在調試中禁用此功能?如何在調試配置中禁用XAML條目?

回答

1

我還沒有測試過這個,但我想知道這個或者類似的東西會起作用。

您可以在任何地圖的DataContext(視圖模型或其他)中聲明該公共屬性。

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

MSDN說我們應該用ApplicationIdCredentialsProvider。)

然後,你可以簡單地綁定到該屬性,因爲CredentialsProviderdependency property

<m:Map CredentialsProvider="{Binding MyCredentialsProvider}"/> 
1

我最近發表了一篇博客文章,Managing the Visibility of Xaml Elements in Cross Platform Applications ,其中描述瞭如何根據構建是Silverlight還是WPF來顯示或隱藏Xaml。

這基本上使用該應用時附加屬性如下會隱藏(或節目)的元素:

local:FrameworkVisibilityManager.VisibleIn="Silverlight" 

// OR 

local:FrameworkVisibilityManager.VisibleIn="Wpf" 

不幸的是有沒有辦法基礎上,配置要排除的XAML,但你一定可以改變如屬性基於配置的可見性。

使用上述方法,您可以創建名爲DebugCredentialsProvider的附加屬性,該屬性僅在Debug中將憑據應用於Bing Maps控件。

+1

+1這是一個很好的解決方案! – Andrew

+0

謝謝! :-)它用在我正在處理的跨平臺組件中(請參閱我的配置文件) –