Я хочу использовать макет ящика в своем приложении для гамбургера, но так как мое приложение содержит более 30 страниц, на которых шаблон ящика, объявленный на каждой странице, невозможен поэтому я хотел, чтобы макет лотка был главной страницей с дочерней/контентной страницей внутри, для которой я написал код ниже с тегом фрейма, чтобы перейти на страницу с щелчком меню в макете ящика.Проблема с кадровой навигацией на кнопке «Назад» в макете ящика Windows Phone 8.1 (Universal) WinRT
Ниже моя 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>
While поведение точно как I хочу но существует неполадки аппаратного back кнопки, как когда она нажата приложение gets выход. Даже у меня есть ручка кнопки назад пресс-конференции, используя следующий код App.xaml.cs
//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 & к моей обычной странице xaml. Пожалуйста, помогите thanx заранее
Thanx Я попробую то же самое. Также хотелось бы знать, что правильный подход к использованию drawerlayout или сделать пользовательский контроль drawerlayout более предпочтительным, и если да, то как я могу сделать то же самое. –
Выглядит хорошо. Зависит от вашего проекта и требований. –
Это не работает, поскольку страница не имеет CanGoBack & GoBack() –