Проблемы с ролловером UWP NavigationView.PaneFooter

Возникла проблема с тем, как PaneFooter обрабатывает эффекты ролловера для пунктов меню навигации.

Вот ошибка Проблемы с ролловером UWP NavigationView.PaneFooter

Как видите, кнопка ChangeUser преждевременно отключает эффект наведения курсора, что приводит к нечетному выделению.

Мне было интересно, сталкивался ли кто-нибудь с этим или знает исправление?

Вот мои проекты, текущий XAML для Nav View

<Page
    x:Class = "BS.MainPage"
    xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local = "using:BS"
    xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable = "d"
    RequestedTheme = "Dark"
    Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Page.Resources>

    </Page.Resources>
    <Grid>
        <Grid.Resources>
            <AcrylicBrush x:Key = "NavigationViewDefaultPaneBackground"
                          BackgroundSource = "HostBackdrop"
                          TintColor = "#262626"
                          TintOpacity = "0.825"
                          FallbackColor = "#262626"/>
        </Grid.Resources>
        <NavigationView IsSettingsVisible = "False" x:Name = "NavView" PaneTitle = "Budget Sheet" IsBackButtonVisible = "Collapsed" PaneDisplayMode = "LeftMinimal" Background = "{StaticResource CustomAcrylicDarkBackground}">
            <NavigationView.MenuItems>
                    <StackPanel Orientation = "Horizontal" UseLayoutRounding = "False">
                        <AppBarButton Icon = "Page2" Margin = "0, 2, 1, 0" Tag = "New_Sheet" HorizontalAlignment = "Center"/>
                        <AppBarButton Icon = "OpenFile" Margin = "1, 2, 0, 0" Tag = "Open_Sheet" HorizontalAlignment = "Center"/>
                        <AppBarButton Icon = "Save" Margin = "1, 2, 0, 0" Tag = "Save_Sheet" HorizontalAlignment = "Center"/>
                        <AppBarButton Icon = "Setting" Margin = "1, 2, 0, 0" Tag = "Settings_Sheet" HorizontalAlignment = "Center"/>
                </StackPanel>                
                <NavigationViewItemSeparator/>
                <NavigationViewItem Name = "HomeItem" Content = "HOME" Tag = "HOME_Page" FontSize = "22" HorizontalAlignment = "Stretch" FontWeight = "Bold" Foreground = "#b880fc"/>
                <NavigationViewItemSeparator/>
                <NavigationViewItem Name = "OverviewItem" Content = "OVERVIEW" Tag = "OverView_Page" FontSize = "22" HorizontalAlignment = "Stretch" FontWeight = "Bold" Foreground = "#b880fc"/>
                <NavigationViewItem Name = "BItem" Content = "B" Tag = "B_Page" FontSize = "22" HorizontalAlignment = "Stretch" FontWeight = "Bold" Foreground = "#b880fc"/>
                <NavigationViewItem Name = "PItem" Content = "P" Tag = "BP_Page" FontSize = "22" HorizontalAlignment = "Stretch" FontWeight = "Bold" Foreground = "#b880fc"/>
                <NavigationViewItem Name = "TItem" Content = "T" Tag = "T_Page" FontSize = "22" HorizontalAlignment = "Stretch" FontWeight = "Bold" Foreground = "#b880fc"/>
                <NavigationViewItem Name = "PDItem" Content = "PD" Tag = "PD_Page" FontSize = "22" HorizontalAlignment = "Stretch" FontWeight = "Bold" Foreground = "#b880fc"/>
            </NavigationView.MenuItems>

            <NavigationView.PaneFooter>
                <StackPanel>
                    <NavigationViewItem Style = "{ThemeResource NavigationViewTitleHeaderContentControlTextStyle}" Name = "ChangePerson" VerticalAlignment = "Stretch" Content = "Change User" Icon = "Contact" Tag = "UserChange_Page" FontSize = "16" HorizontalAlignment = "Center" FontWeight = "Bold" Foreground = "#b880fc"/>
                </StackPanel>                                 
            </NavigationView.PaneFooter>
        </NavigationView>
    </Grid>
</Page>

🤔 А знаете ли вы, что...
C# поддерживает атрибуты, которые позволяют добавлять метаданные к коду.


1
606
1

Ответ:

Решено

Ваш элемент управления нижним колонтитулом вложен в StackPanel, который добавляет к нему дополнительные отступы и, следовательно, делает его странным. У вас есть следующие решения:

  1. удалите Стеклопанель и добавьте NavigationViewItem непосредственно в нижний колонтитул и установите для Горизонтальное выравнивание нижнего колонтитула NavigationViewItem значение Stretch.
  2. оставьте панель стека такой, какая она есть, и просто измените Горизонтальное выравнивание вашего нижнего колонтитула navigationViewitem на Потягиваться
  3. На мой взгляд, лучшим решением было бы использовать новый NavigationView, представленный в новом предварительном выпуске библиотеки Winui, вы можете использовать его через Nuget, и все его элементы управления имеют обратную совместимость до Юбилейное обновление для Windows 10, поэтому он решит больше проблем для вашего app. подробнее здесь: https://docs.microsoft.com/en-us/uwp/toolkits/winui/

Обновлять

Вот сообщение в блоге для получения дополнительной информации о WinUihttps://blogs.windows.com/buildingapps/2018/07/23/windows-ui-library-preview-released/

Winui - это фактически библиотека nuget, которую можно использовать в вашем приложении uwp. и, как упоминалось в блоге выше, вы можете посетить ветку dev репозитория образцов xamlUI на Github, чтобы увидеть, как реализован новый NavigationView, я уверен, что это решит ваши потребности, и если это все еще не удается, вы можете связать это переполнение стека задайте вопрос и откройте проблему в этом репо, и я уверен, что команда вам поможет.