我有一个XAML导航视图控件与“顶部”PaneDisplayMode。
我想增加窗格高度并居中对齐菜单项。
增加NavigationViewItem高度不会使窗格变高。更改对齐设置不会影响菜单项在窗格中的位置。
我该怎么做呢?
<Page ... xmlns:muxc="using:Microsoft.UI.Xaml.Controls" ... >
<Grid>
<muxc:NavigationView x:Name="NavView"
Loaded="NavView_Loaded"
ItemInvoked="NavView_ItemInvoked"
BackRequested="NavView_BackRequested"
PaneDisplayMode="Top">
<muxc:NavigationView.MenuItems>
<muxc:NavigationViewItem Tag="home" Icon="Home" Content="Home"/>
<muxc:NavigationViewItemSeparator/>
<muxc:NavigationViewItemHeader x:Name="MainPagesHeader"
Content="Main pages"/>
<muxc:NavigationViewItem Tag="apps" Content="Apps">
<muxc:NavigationViewItem.Icon>
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
</muxc:NavigationViewItem.Icon>
</muxc:NavigationViewItem>
<muxc:NavigationViewItem Tag="games" Content="Games">
<muxc:NavigationViewItem.Icon>
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
</muxc:NavigationViewItem.Icon>
</muxc:NavigationViewItem>
<muxc:NavigationViewItem Tag="music" Icon="Audio" Content="Music"/>
</muxc:NavigationView.MenuItems>
<ScrollViewer>
<Frame x:Name="ContentFrame" Padding="12,0,12,24" IsTabStop="True"
NavigationFailed="ContentFrame_NavigationFailed"/>
</ScrollViewer>
</muxc:NavigationView>
</Grid>
</Page>
2条答案
按热度按时间3pvhb19x1#
您可以通过VisualTreeHelper类获取子网格来自定义NavigationView的外观。
{ //使用muxc =微软.UI.Xaml.控件;
}
您必须找到导航视图查尔兹视图的路径,并且您应该有一种方法来自定义导航视图项,如上所述。
您可以使用Visual Studio中的可视化树检查器来检查导航视图并了解子元素。See Here我向Bing AI询问了有关检查UWP应用的可视化树的问题,他给了我那个链接。
在XAML中自定义NavigationView外观的另一种方法是使用Control模板和setter属性。
如果您没有找到“DefaultNavigationViewStyle”,您必须将其添加到应用程序合并资源中。
4jb9z9bj2#
找不到答案,所以通过删除导航视图和实现类似的东西来解决它,在这里分享,以防其他人也遇到同样的困境。所以这更多的是一个变通办法,而不是一个答案。如果有人提供了一个更好的答案,我会接受它。
在NavigationRoot.xaml中,我有一个带有堆栈面板的网格用于“窗格”,框架用于页面。注意,按钮有一个与我在导航中使用的页面标签相匹配的标签(不要判断)。
在代码后面我跟踪“CurrentPageTag”,我有一个页面列表。
在切换按钮的button_click事件中,我获得了button标记并导航到该页面:
这为您提供了基本的“导航视图”之类的功能,实际上代码堆更少(但不能动态更改窗格布局)。
我在这里为了简洁而省略的是,我必须设计切换按钮的样式以更适合这个目的。而且,我让它们更像单选按钮一样工作,在任何时候只有一个被选中。也许单选按钮应该使用更多的样式(但我讨厌样式,所以走了这条路)?