Uwp 模板10滚动汉堡菜单
我有一个模板10汉堡包菜单与主要按钮和第二个按钮。 在PrimaryButtons中,我有三个ButtonType=“Literal”的HamburgerButtonInfo。第一个是包含用户信息的Stackpanel,第二个是包含5个条目的ListView,第三个是包含多个条目的ListView。现在我的整个主按钮都可以滚动,因为最后一个ListView太长了。 我的目标是使前两个汉堡按钮信息始终可见(粘性),最后一个可滚动。 有什么想法吗 更新:XamlCodeUwp 模板10滚动汉堡菜单,uwp,template10,hamburger-menu,Uwp,Template10,Hamburger Menu,我有一个模板10汉堡包菜单与主要按钮和第二个按钮。 在PrimaryButtons中,我有三个ButtonType=“Literal”的HamburgerButtonInfo。第一个是包含用户信息的Stackpanel,第二个是包含5个条目的ListView,第三个是包含多个条目的ListView。现在我的整个主按钮都可以滚动,因为最后一个ListView太长了。 我的目标是使前两个汉堡按钮信息始终可见(粘性),最后一个可滚动。 有什么想法吗 更新:XamlCode <Controls:H
<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中,因为这是一个非常边缘的情况。但至少你能做到
第二部分是使用单个文本。使用单个文本,您可以用两行的网格
填充剩余空间。第一排是你的两个固定物品——你不负责管理(这类定制的成本,但也不是世界末日)。第二行可以保存您的列表视图
,该视图将按照您的要求适当滚动