2016-03-03 73 views
0

對於我們的應用程序的當前版本,我們不支持高對比度模式。高對比度的支持(具有合理設計的用戶界面等)是我們將在後續版本/更新中添加到我們的應用程序中的內容。強制UWP應用程序使用默認主題

即使用戶將設備置於高對比度模式下,是否有一種簡單方法可以強制UWP應用程序使用默認主題?

在我的App.xaml我定義如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.ThemeDictionaries> 
     <ResourceDictionary x:Key="HighContrast"> 
      copy/pasted styles into here 
     </ResourceDictionary> 
    </ResourceDictionary.ThemeDictionaries> 
</ResourceDictionary> 

但從C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.10586.0\Generic\themeresources.xaml複製的<ResourceDictionary x:Key="Default">內容,以爲這會迫使應用程序仍然使用我的應用程序的高對比度主題詞典即使設備進入HighContrast模式也是默認主題,但沒有效果。

任何人都知道是否有辦法強制應用程序使用默認主題?

+0

請求主題屬性適合你嗎? – GeralexGR

+0

@ Jerrak0s不,它不會。根據[MSDN文檔](https://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.application.requestedtheme)「如果用戶在高對比度模式下運行,則會忽略RequestedTheme屬性。 「 –

回答

0

正式的答案是否定的。你的方法是一種黑客方式。

默認情況下,UWP應用支持高對比度主題。如果用戶選擇他們希望系統使用系統設置或輔助功能工具中的高對比度主題,則框架會自動使用顏色和樣式設置,從而爲UI中的控件和組件生成高對比度佈局和渲染。

欲瞭解更多信息,請參閱High-contrast themes

如您所知,設置RequestedTheme無法在高對比度模式下工作。並且您已將<ResourceDictionary x:Key="Default">的內容複製到app.xaml。你說它沒有效果。原因是在Default的內容中,一些屬性使用像這樣的顏色:Color="{StaticResource SystemChromeBlackHighColor}"。此顏色基於用戶選擇的主題。

當用戶選擇高對比度主題時,系統將強制所有應用程序適應高對比度主題。如果您的應用是唯一不使用高對比度顏色的應用,則您的應用將不適應其他應用。