Fluent AcrylicBrush не переключается между Light, Dark, theme и т. Д. UWP - PullRequest
0 голосов
/ 04 марта 2019

Определенная Светлая тема (<AcrylicBrush TintColor="Red"/>), Темная, (<AcrylicBrush TintColor="Orange"/>) в App.xaml.Согласно этому сообщению, Изменение целевой версии проекта UWP с 1803 на 1809 отключает акриловую текстуру NavigationView - почему? , я добавил следующее в ShellPage.xaml.Ожидаемое поведение при переключении между светлой и темной темами заключается в том, что элемент управления NavigationView приложения будет иметь оттенок AcrylicBrush, который переключается между красным и оранжевым.В приведенном ниже определении фактическое поведение остается оранжевым.

ShellPage.xaml:

<Page.Resources>
    <StaticResource  x:Key="NavigationViewExpandedPaneBackground"
                     ResourceKey="MyAcrylicBrush"/>
</Page.Resources>

App.xaml:

<Application
x:Class="TEST.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
                <AcrylicBrush x:Key="MyAcrylicBrush"
                              BackgroundSource="HostBackdrop"
                              TintColor="Green"
                              TintOpacity="0.8" />
                <AcrylicBrush x:Key="NavigationViewDefaultPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Green"
                              TintOpacity="0.8" />
                <AcrylicBrush x:Key="NavigationViewTopPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Green"
                              TintOpacity="0.8" />
                <AcrylicBrush x:Key="NavigationViewExpandedPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Green"
                              TintOpacity="0.8" />
            </ResourceDictionary>
            <ResourceDictionary x:Key="Dark">
                <AcrylicBrush x:Key="MyAcrylicBrush"
                              BackgroundSource="HostBackdrop"
                              TintColor="Orange"
                              TintOpacity="0.8" />
                <AcrylicBrush x:Key="NavigationViewDefaultPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Orange"
                              TintOpacity="0.8" />
                <AcrylicBrush x:Key="NavigationViewTopPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Orange"
                              TintOpacity="0.8" />
                <AcrylicBrush x:Key="NavigationViewExpandedPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Orange"
                              TintOpacity="0.8" />
            </ResourceDictionary>
            <ResourceDictionary x:Key="Light">
                <AcrylicBrush x:Key="MyAcrylicBrush"
                              BackgroundSource="HostBackdrop"
                              TintColor="Red"
                              TintOpacity="1"/>
                <AcrylicBrush x:Key="NavigationViewDefaultPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Red"
                              TintOpacity="1" />
                <AcrylicBrush x:Key="NavigationViewTopPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Red"
                              TintOpacity="1" />
                <AcrylicBrush x:Key="NavigationViewExpandedPaneBackground"
                              BackgroundSource="HostBackdrop"
                              TintColor="Red"
                              TintOpacity="1"/> 
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>
</Application>

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Если вы используете StaticResource, это сохранит кисть от первой оценки.Однако вам вообще не нужно предоставлять ресурс на ShellPage, а того, что у вас есть в App.xaml, должно быть достаточно - у вас есть кисть с именем NavigationViewExpandedPaneBackground, и эта кисть должна автоматически переопределить значение NavigationPane по умолчанию (связанный вопрос конкретно говорил о том случае, когда имя ресурса отличается от встроенного).Более того, он должен работать в соответствии с текущей темой, поскольку он является частью тематических словарей.

Попробуйте удалить элемент <StaticResource> из ShellPage, чтобы посмотреть, решит ли он проблему.

Я проверил это изменение, и оно работает правильно.

Lightтема

Light theme

Темная тема

Dark theme

0 голосов
/ 04 марта 2019

Вы можете напрямую передать ключ (NavigationViewExpandedPaneBackGround) на AcrylicBrush.Таким образом, это изменит ваш навигационный фон просмотра.

  <Page.Resources>
      <ResourceDictionary>
            <ResourceDictionary.ThemeDictionaries>
                <ResourceDictionary x:Key="Light">
                    <AcrylicBrush x:Key="NavigationViewExpandedPaneBackground" BackgroundSource="HostBackdrop" TintColor="{ThemeResource SystemAccentColorDark1}" FallbackColor="{ThemeResource SystemAccentColorDark1}" TintOpacity="0.80"/>   
                </ResourceDictionary>
                <ResourceDictionary x:Key="Dark">
                    <AcrylicBrush x:Key="NavigationViewExpandedPaneBackground" BackgroundSource="HostBackdrop" TintColor="{ThemeResource SystemAltHighColor}" FallbackColor="#333333" TintOpacity="0.50"/>
                </ResourceDictionary>
            </ResourceDictionary.ThemeDictionaries>
        </ResourceDictionary>
</Page.Resources>

enter image description here Надеюсь, это решит вашу проблему.

...