windows - NavigationView 中的 UWP ListView,仅呈现第一个子项
问题描述
我想要一个 NavigationView ,其中包含一些比常见的稍微复杂一些的元素NavigationViewItem
。更具体地说,我的目标是ListView
在 my 中间的某个地方NavigationView
,就在该NavigationView.MenuItems
部分之后。但是由于某些原因,当我尝试使用 a ListView
(or StackPanel
) 时,只会渲染第一个孩子。
一些 XAML 重现此问题:
<NavigationView x:Name="mainNavigation" PaneDisplayMode="Left" ItemInvoked="OnNavigationViewItemInvoked" Loaded="OnNavigationViewLoaded">
<NavigationView.MenuItems>
<NavigationViewItemHeader Content="Favorites" />
<NavigationViewItem Content="Space 1" />
<NavigationViewItem Content="Space 2" />
<NavigationViewItemSeparator Margin="0,0,0,20" />
<NavigationViewItem>
<AutoSuggestBox QueryIcon="Find" PlaceholderText="Search for a space" Width="288" />
</NavigationViewItem>
<NavigationViewItem>
<ListView>
<ListViewItem>
<TextBlock Text="Test1" />
</ListViewItem>
<ListViewItem>
<TextBlock Text="Test2" />
</ListViewItem>
<ListViewItem>
<TextBlock Text="Test3" />
</ListViewItem>
</ListView>
</NavigationViewItem>
</NavigationView.MenuItems>
<Frame x:Name="rootFrame" />
</NavigationView>
哪个渲染到:
正如您在此屏幕截图中看到的那样,只有第一个孩子(“Test1”)可见,“Test2”和“Test3”由于我不明白的原因没有呈现。
解决方案
默认情况下,ListViewItem
是固定高度。您可以通过更新 XAML 中的内联模板来更改此设置:
<NavigationViewItem>
<NavigationViewItem.Template>
<ControlTemplate>
<Border Height="auto">
<ContentPresenter/>
</Border>
</ControlTemplate>
</NavigationViewItem.Template>
<ListView>
<!-- your items -->
</ListView>
</NavigationViewItem>
推荐阅读
- ambari - 由于无法访问 hortonworks 存储库,ambari 构建失败
- python - 如何高效地开发 Tkinter GUI?
- google-chrome-extension - 如何更改 Chrome 扩展的商店图标?
- python - 在记事本中打开的音乐文件
- python - 最大磁盘空间的时间和空间复杂度
- reactjs - 如何更改路径以找到 React-bootstrap?
- python - 井字游戏蟒蛇故障
- jestjs - 使用 eslintrc 禁用特定文件结尾的 ESlint 规则
- mongodb - 从 mongo 中的聚合中过滤对象(过滤内部数组)
- azure-devops - 在 Azure DevOps 管道中强制提交输入