我想要一个NavigationView,其中包含一些比普通NavigationViewItem
稍微复杂的元素。更具体地说,我的目标是在ListView
部分之后,在我的NavigationView
中间的某个地方放置一个NavigationView.MenuItems
。但是由于某些原因,当我尝试使用ListView
(或StackPanel
)时,仅呈现第一个 child 。
一些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>
呈现给:
如您在此屏幕快照中所见,只有第一个 child (“Test1”)可见,由于我不了解的原因,未渲染“Test2”和“Test3”。
最佳答案
默认情况下,ListViewItem
是固定高度。您可以通过在XAML中内联更新模板来更改此设置:
<NavigationViewItem>
<NavigationViewItem.Template>
<ControlTemplate>
<Border Height="auto">
<ContentPresenter/>
</Border>
</ControlTemplate>
</NavigationViewItem.Template>
<ListView>
<!-- your items -->
</ListView>
</NavigationViewItem>
关于windows - NavigationView中的UWP ListView,仅呈现第一个子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59585719/