我正在使用帶有 Microsoft App SDK 1.0.1 版的 WinUI 3。
我用于主導航的NavigationView( MSDN - NavigationView ) 元素的背景顏色存在問題。
問題是背景顏色NavigationView總是windows設定的背景顏色(我使用windows 10),即背景顏色在“暗模式”中是暗的,或者在“亮模式”中是白色/淺灰色,與設定無關/ 我在應用程式本身中使用的主題。
在應用程式中,我有一個用于切換主題的小選單,設定為“淺色”、“深色”或“使用 Windows 設定”。
如果我在 Windows 中使用“淺色”設定并將應用程式中的主題從“淺色”更改為“深色”,我的應用程式的所有元素都會正確更改顏色(即使用深色背景和淺色前景色),如果背景除外在NavigationView這種情況下,它會保持其“淺色”背景。有趣的是,在這種情況下,字體的前景色確實會從暗變為亮,這會導致 NavigationView 具有“亮”背景色和“亮”前景色。
如果 Windows 設定為“深色”,則NavigationView無論我是否將應用主題更改為“淺色”,它的背景顏色始終為深色。
這是我在頂部的主視窗NavigationView(我洗掉了不相關的部分):
<Window>
<Grid x:Name="Root" x:FieldModifier="Internal">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- https://docs.microsoft.com/en-us/windows/apps/design/controls/navigationview -->
<NavigationView x:Name="navigationView" PaneDisplayMode="Top"
IsBackEnabled="True" IsBackButtonVisible="Collapsed" BackRequested="NavigationView_OnBackRequested"
SelectionChanged="NavigationView_OnSelectionChanged"
>
<NavigationView.MenuItems>
<NavigationViewItem Content="A" />
<NavigationViewItem Content="B" />
<NavigationViewItem Content="C" />
</NavigationView.MenuItems>
</NavigationView>
</Grid>
</Window>
這是我在應用程式中用于設定主題的代碼:
public async Task SetThemeAsync(ElementTheme theme)
{
_rootElement.RequestedTheme = theme;
}
_rootElement指向 App.NavigationRootWindow.Root 。請注意Grid,我上面的 XAML 代碼中有設定x:Name="Root"。所以_rootElement我應用主題的地方是我的主視窗的網格。
有誰知道為什么NavigationView我上面描述的背景顏色沒有正確改變?感謝您的時間。
uj5u.com熱心網友回復:
基于這個問題:Change theme programmatically in WinUI 3 preview 3 desktop application,您可以像這樣在根元素上設定Background屬性:
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}
根元素是Grid與x:Name="Root"問題的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461944.html
標籤:。网 xml winui-3 windows-app-sdk
