Uwp 模板10滚动汉堡菜单

Uwp 模板10滚动汉堡菜单,uwp,template10,hamburger-menu,Uwp,Template10,Hamburger Menu,我有一个模板10汉堡包菜单与主要按钮和第二个按钮。 在PrimaryButtons中,我有三个ButtonType=“Literal”的HamburgerButtonInfo。第一个是包含用户信息的Stackpanel,第二个是包含5个条目的ListView,第三个是包含多个条目的ListView。现在我的整个主按钮都可以滚动,因为最后一个ListView太长了。 我的目标是使前两个汉堡按钮信息始终可见(粘性),最后一个可滚动。 有什么想法吗 更新:XamlCode <Controls:H

我有一个模板10汉堡包菜单与主要按钮和第二个按钮。 在PrimaryButtons中,我有三个ButtonType=“Literal”的HamburgerButtonInfo。第一个是包含用户信息的Stackpanel,第二个是包含5个条目的ListView,第三个是包含多个条目的ListView。现在我的整个主按钮都可以滚动,因为最后一个ListView太长了。 我的目标是使前两个汉堡按钮信息始终可见(粘性),最后一个可滚动。 有什么想法吗

更新:XamlCode

<Controls:HamburgerMenu x:Name="MyHamburgerMenu">
    <Controls:HamburgerMenu.PrimaryButtons>
        <!-- account data -->
        <Controls:HamburgerButtonInfo ButtonType="Literal" ScrollViewer.VerticalScrollMode="Disabled">
            <StackPanel Orientation="Vertical">
                <StackPanel Orientation="Horizontal">
                    <Image Width="38" Height="38" Margin="5" Source="../Assets/ProfilePlaceholder.png" />
                    <StackPanel Orientation="Vertical" VerticalAlignment="Center">
                        <TextBlock Text="{x:Bind Path=ViewModel.Account.UserName, Mode=OneWay}" FontSize="18" />
                        <TextBlock Text="{x:Bind Path=ViewModel.Account.PrimaryAddress, Mode=OneWay}" TextTrimming="CharacterEllipsis" FontSize="16" />
                    </StackPanel>
                </StackPanel>
                <Line StrokeThickness="2" Stroke="#cacaca" X2="300" Margin="10,5" />
            </StackPanel>
        </Controls:HamburgerButtonInfo>

        <!-- standard folder -->
        <Controls:HamburgerButtonInfo ButtonType="Literal">
            <ListView ItemsSource="{x:Bind Path=ViewModel.StandardFolderList, Mode=OneWay}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding Path=Type, Converter={StaticResource FolderTypeToImageSourceConverter}}" Width="19" Height="19" Margin="0,0,20,0" />
                            <TextBlock Text="{Binding Path=Name}" FontSize="14" VerticalAlignment="Center"/>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </Controls:HamburgerButtonInfo>

        <!-- user folder -->
        <Controls:HamburgerButtonInfo ButtonType="Literal">
            <StackPanel x:Name="UserFolderListView">
                <TextBlock Text="Folders" FontSize="14" Foreground="#8f8f8f" Margin="5" Visibility="{x:Bind Path=ViewModel.UserFolderList, Mode=OneWay, Converter={StaticResource ValueNotNullToVisibilityConverter}}"/>
                <toolkit:TreeView ItemsSource="{x:Bind Path=ViewModel.UserFolderList, Mode=OneWay}" Background="#fafafa">
                    <toolkit:TreeView.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding Path=Name}"/>
                                <TextBlock Text="{Binding Path=Counter}" />
                            </StackPanel>
                            <data:DataTemplateExtensions.Hierarchy>
                                <data:HierarchicalDataTemplate ItemsSource="{Binding ChildFolder}" />
                            </data:DataTemplateExtensions.Hierarchy>
                        </DataTemplate>
                    </toolkit:TreeView.ItemTemplate>
                </toolkit:TreeView>
            </StackPanel>
        </Controls:HamburgerButtonInfo>
    </Controls:HamburgerMenu.PrimaryButtons>

    <Controls:HamburgerMenu.SecondaryButtons>
        <!--  settingspage button  -->
        <Controls:HamburgerButtonInfo x:Name="SettingsButton" PageParameter="0"
                                      PageType="views:SettingsPage">
            <Controls:HamburgerButtonInfo.NavigationTransitionInfo>
                <SuppressNavigationTransitionInfo />
            </Controls:HamburgerButtonInfo.NavigationTransitionInfo>
            <StackPanel Orientation="Horizontal">
                <SymbolIcon Width="48" Height="48"
                            Symbol="Setting" />
                <TextBlock Margin="12,0,0,0" VerticalAlignment="Center"
                           Text="Settings" />
            </StackPanel>
        </Controls:HamburgerButtonInfo>
    </Controls:HamburgerMenu.SecondaryButtons>

</Controls:HamburgerMenu>


thanx

如果您使用
实时可视化树
检查
汉堡菜单
的布局,您可以看到在
主按钮
的内容区域中,有一个
滚动查看器

这意味着,此区域内的内容将具有无限大小,因此当您滚动它时,实际上是滚动此
ScrollViewer
,而不是滚动您的
ListView
,这就是为什么滚动它时前两个元素将消失的原因

要使
列表视图
可以垂直滚动,它必须有一个有限的高度,在这种情况下,我建议您为
列表视图
指定一个固定的
高度。从我所看到的,你的第三个是一个
TreeView
,也就是说,
StackPanel
也有无限大小,你可以给你的
StackPanel
一个名为“UserFolderListView”的大小,或者给它的子
TreeView
一个高度


如果您还希望使布局适应不同大小的设备,则可以使用在不同设备上设置目标时提供不同的高度

如果使用
Live Visual Tree
检查
HamburgerMenu
的布局,您可以看到在
PrimaryButtons
的内容区域中,有一个
ScrollViewer

这意味着,此区域内的内容将具有无限大小,因此当您滚动它时,实际上是滚动此
ScrollViewer
,而不是滚动您的
ListView
,这就是为什么滚动它时前两个元素将消失的原因

要使
列表视图
可以垂直滚动,它必须有一个有限的高度,在这种情况下,我建议您为
列表视图
指定一个固定的
高度。从我所看到的,你的第三个是一个
TreeView
,也就是说,
StackPanel
也有无限大小,你可以给你的
StackPanel
一个名为“UserFolderListView”的大小,或者给它的子
TreeView
一个高度


如果您还希望使布局适应不同大小的设备,则可以使用在不同设备上设置目标时提供不同的高度

我看不到一个简单的方法来做你要做的事情,而不进行一些重要的视觉树爬行。如果你不介意这样做的话,那么这里有个主意。找到主按钮自动使用的
ScrollViewer
,并将其设置为
verticalScrollMode
禁用。这让你走到了一半。这会导致主按钮停止滚动。我们永远不会将其作为公共属性添加到HamMenu中,因为这是一个非常边缘的情况。但至少你能做到

第二部分是使用单个文本。使用单个文本,您可以用两行的
网格
填充剩余空间。第一排是你的两个固定物品——你不负责管理(这类定制的成本,但也不是世界末日)。第二行可以保存您的
列表视图
,该视图将按照您的要求适当滚动

我想重申,这是一个边缘案例,控件永远不会支持开箱即用。尽管如此,我认为这对你来说应该是完美的。请,如果您愿意,一旦您设置了这种方法,请在这个问题中返回一些代码,以便将来的开发人员可以从您的工作中受益


祝你好运

我看不到一个简单的方法来做你要做的事情,而不进行一些重要的视觉树爬行。如果你不介意这样做的话,那么这里有个主意。找到主按钮自动使用的
ScrollViewer
,并将其设置为
verticalScrollMode
禁用。这让你走到了一半。这会导致主按钮停止滚动。我们永远不会将其作为公共属性添加到HamMenu中,因为这是一个非常边缘的情况。但至少你能做到

第二部分是使用单个文本。使用单个文本,您可以用两行的
网格
填充剩余空间。第一排是你的两个固定物品——你不负责管理(这类定制的成本,但也不是世界末日)。第二行可以保存您的
列表视图
,该视图将按照您的要求适当滚动