我无法获得后面的硬件按钮来执行我希望它为
Windows Phone 8执行的操作.该应用程序严格来说只是webview,所以截至现在当单击后退(硬件)按钮时它会关闭应用程序.我如何解决这个问题,以便进入上一个网页或返回索引或其他内容?
谢谢
- namespace AvoidDiabetes
- {
- public partial class MainPage : PhoneApplicationPage
- {
- // Url of Home page
- private string MainUri = "/Html/index.html";
- private Stack<Uri> _history = new Stack<Uri>();
- private Uri _current = null;
- // Constructor
- public MainPage()
- {
- InitializeComponent();
- }
- private void Browser_Loaded(object sender,RoutedEventArgs e)
- {
- // Add your URL here
- Browser.Navigate(new Uri(MainUri,UriKind.Relative));
- Browser.IsScriptEnabled = true;
- }
- // Navigates back in the web browser's navigation stack,not the applications.
- private void BackApplicationBar_Click(object sender,EventArgs e)
- {
- Browser.GoBack();
- }
- // Navigates forward in the web browser's navigation stack,not the applications.
- private void ForwardApplicationBar_Click(object sender,EventArgs e)
- {
- Browser.GoForward();
- }
- // Navigates to the initial "home" page.
- private void HomeMenuItem_Click(object sender,EventArgs e)
- {
- Browser.Navigate(new Uri(MainUri,UriKind.Relative));
- }
- // Handle navigation failures.
- private void Browser_NavigationFailed(object sender,System.Windows.Navigation.NavigationFailedEventArgs e)
- {
- MessageBox.Show("Navigation to this page Failed,check your internet connection");
- }
- protected override void OnBackKeyPress(CancelEventArgs e)
- {
- base.OnBackKeyPress(e);
- if (_history.Count == 0)
- {
- // No history,allow the back button
- // Or do whatever you need to do,like navigate the application page
- return;
- }
- // Otherwise,if this isn't the first navigation,push the current
- else
- {
- Browser.GoBack();
- }
- }
- private async void WebBrowser_Navigated(object sender,NavigationEventArgs e)
- {
- // If we navigated back,pop the last entry
- if (_history.Count > 0 && _history.Peek() == e.Uri)
- {
- _history.Pop();
- }
- // Otherwise,push the current
- else if (_current != null)
- {
- _history.Push(_current);
- }
- // The current page is now the one we've navigated to
- _current = e.Uri;
- }
- }
}
您需要在应用程序页面中覆盖
OnBackKeyPress并处理将
WebBrowser控件导航回上一页.
假设您正在使用C#,这里大概是如何做到的(将WebBrowser_Navigated连接到WebBrowser的Navigated事件):
- private Stack<Uri> _history = new Stack<Uri>();
- private Uri _current = null;
- protected override void OnBackKeyPress(CancelEventArgs e)
- {
- base.OnBackKeyPress(e);
- if (_history.Count == 0)
- {
- // No history,allow the back button
- // Or do whatever you need to do,like navigate the application page
- return;
- }
- // Cancel the back button press
- e.Cancel = true;
- // Navigate to the last page
- Browser.Navigate(_history.Peek());
- }
- private async void WebBrowser_Navigated(object sender,NavigationEventArgs e)
- {
- // If we navigated back,pop the last entry
- if (_history.Count > 0 && _history.Peek() == e.Uri)
- {
- _history.Pop();
- }
- // Otherwise,push the current
- else if (_current != null)
- {
- _history.Push(_current);
- }
- // The current page is now the one we've navigated to
- _current = e.Uri;
- }