我正在使用WinUI 3和Microsoft App SDK1.0.1版。
我對用于主導航的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
指向應用程序。導航根窗口。根請注意,上面我的XAML代碼中的Grid
有集x:Name="Root"
。所以我應用主題的_rootElement
是我主窗口的網格。
有人知道為什么NavigationView
的背景色沒有像我上面描述的那樣正確地改變嗎?謝謝你抽出時間。
基于這個問題:在WinUI 3 preview 3桌面應用程序中以編程方式更改主題,您可以在根元素上設置Background屬性,如下所示:
問題的根元素是
Grid
和x:Name="Root"
。