我想在我的应用中使用抽屉布局作为汉堡包作为带有子/内容页面的主页面,我在下面写了带有框架标签的代码,以导航到单击抽屉布局的菜单。
下面是我的xaml
<Grid x:Name="Rootlayout">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- title bar-->
<Grid x:Name="TitleBar" Height="50" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Background="SkyBlue">
<Image Source="/Assets/fs-logo.png" Height="50" HorizontalAlignment="Left" Margin="10,0,0,0"/>
</Grid>
<!--Drawer Layout-->
<drawer:DrawerLayout x:Name="DrawerLayout" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<Grid>
<Frame x:Name="contentFrame" />
</Grid>
<Grid x:Name="listFragment" FlowDirection="LeftToRight" >
<ListView x:Name="listItem" SelectionChanged="listItem_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontSize="20" Foreground="Black" Margin="10" VerticalAlignment="Center" HorizontalAlignment="Left"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</drawer:DrawerLayout>
</Grid>
虽然行为完全按照我的意愿,但是硬件返回按钮存在问题,就像按下应用程序退出时一样。甚至我都使用以下代码为app.xaml.cs
,也有hange back按钮按事件//Below code of line in app constructor & it's method defination
#if WINDOWS_PHONE_APP
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
#endif
#if WINDOWS_PHONE_APP
void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (frame != null && frame.CanGoBack)
{
frame.GoBack();
e.Handled = true;
}
}
#endif
任何人都可以帮助我如何解决此问题的后退按钮,或者我有什么其他方法可以利用抽屉布局,而我不必在每个页面上编写抽屉布局XAML代码。一种方法是使用USERCONTROL,但由于内容网格是DrawerLayout的一部分,因此我无法弄清楚如何俱乐部USercontrol&amp;我的普通页面XAML。请提前帮助
您在错误的框架上检查CanGoBack
。
Window.Current.Content
是包含抽屉layout的基础框架。您实际想解决的是其中的contentFrame
。
所以您真正想看的是:
(Window.Current.Content as RootPage)?.Frame.CanGoBack
其中 RootPage
是您在问题中发布的XAML页面的名称。