【发布时间】:2019-08-13 19:55:55
【问题描述】:
我制作了一个基本应用程序,它有一个带有两个选项的菜单,每个选项都会进入一个新页面。问题是这些页面是在主页面上启动的,因此它与菜单和后面的所有内容重叠。这些页面没有任何内容,它们的代码是一个简单的 xaml 和 xaml.cs。
我使用了一些微软开发者网页给出的例子,但结果是一样的。我还没有找到任何其他可能的解决方案,我无法理解正在发生的事情。
包含菜单的页面
<Grid>
<NavigationView
x:Name="NavView"
ItemInvoked="NavViewItemInvoked"
Windows10version1803:BackRequested="NavViewBackRequested"
Windows10version1803:IsBackEnabled="{x:Bind Frame.CanGoBack, Mode=OneWay}"
>
<NavigationView.MenuItems>
<NavigationViewItem x:Name="HomePage" Content="Home" Icon="Home" />
<NavigationViewItem x:Name="AddPage" Content="Add" Icon="Add" />
</NavigationView.MenuItems>
<NavigationView.AutoSuggestBox>
<AutoSuggestBox x:Name="SearchBox" QueryIcon="Find" />
</NavigationView.AutoSuggestBox>
<ScrollViewer>
<frame x:Name="ContentFrame" Padding="12,0,12,24" IsTabStop="True" NavigationFailed="ContentFrame_NavigationFailed" />
</ScrollViewer>
</NavigationView>
<frame x:Name="frame" Margin="20,0,0,0" Navigating="OnNavigatingToPage">
<Frame.ContentTransitions>
<TransitionCollection>
<NavigationThemeTransition>
<NavigationThemeTransition.DefaultNavigationTransitionInfo>
<EntranceNavigationTransitionInfo />
</NavigationThemeTransition.DefaultNavigationTransitionInfo>
</NavigationThemeTransition>
</TransitionCollection>
</Frame.ContentTransitions>
</frame>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="{x:Bind NavView.CompactModeThresholdWidth}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<!-- Leave the next line for left-only navigation. -->
<Setter Target="ContentFrame.Padding" Value="24,0,24,24" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
在菜单中打开所选项目的功能:
private void NavViewItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
var label = args.InvokedItem as string;
var pageType =
label == "Home" ? typeof(HomePage) :
label == "Add" ? typeof(AddPage) : null;
if (pageType != null && pageType != AppFrame.CurrentSourcePageType)
{
AppFrame.Navigate(pageType);
}
}
我希望有人能告诉我发生了什么或错误在哪里。
非常感谢
【问题讨论】:
-
您能告诉我们为什么您在页面中使用 2 个框架吗? (内容框架和应用框架)。另外,你有一个名为“frame”的框架,我猜 AppFrame 和“frame”指的是同一个实例,对吗?
-
抱歉耽搁了。我对 uwp 应用程序开发不是很有经验。我知道我应该只有一帧。是的,“AppFrame”是指其中一个框架,这可能是错误的,有两个框架。稍后我会尝试更改它,我会给你一些反馈。
标签: c# visual-studio xaml uwp