导航到新页面并触发WebView

时间:2019-04-09 22:11:52

标签: xamarin xamarin.forms

点击按钮后,使用Xamarin在另一个页面上打开网络视图。

我正在尝试使用Xamarin构建跨平台应用程序(于4-03-19更新)。在应用程序的主页上,我有几个按钮。使用这些按钮之一,我希望使用网络视图来加载网站。如果我使用其中一个按钮从该主页启动webview,就可以完成。但是,在该主页上,我将导航设置为false,这样我就看不到该页面上的导航。这是发生问题的地方。由于导航设置为false,因此一旦调用Web视图就无法返回。我对此的解决方案是让我的按钮导航到新页面。然后,我试图在页面加载后触发网页视图。但是我无法做到这一点。

Mainpage.xaml

NavigationPage.HasNavigationBar="False"

Mainpage.xaml.cs

 public MainPage()
                {
                    InitializeComponent();

                }
        private async void OnButtonClickedwebsite(object sender, EventArgs e)
        {
            await Navigation.PushAsync(new Website());
        }
        //private void OnButtonClickedwebsite(object sender, EventArgs e)
        //{
        //    var browser = new WebView();
        //    browser.Source = "https://google.com";
        //    Content = browser;
        //}

Website.xaml

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:test" 
             x:Class="test.Websitemain"
             BackgroundColor="White">
    <ContentPage.Content>

    <StackLayout>

            <WebView x:Name="websitemain" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"/>
 </StackLayout>
     </ContentPage.Content>

</ContentPage>

Website.xaml.cs

 public partial class Websitemain : ContentPage
    {
        public class Webview : ContentPage
        {

            private void Websitemain(EventArgs e)
            {
                //await Navigation.PushAsync(new Website());
                var browser = new WebView();
                browser.Source = "https://google.com";
                Content = browser;

            }


        }

该按钮应导航到新页面,然后启动我的Web视图。但是,它只是导航到新页面而从不触发Web视图,因此它只是一个空白屏幕。

2 个答案:

答案 0 :(得分:0)

// load the website in your page's constructor
public partial class Websitemain : ContentPage
{
    private void Websitemain()
    {
      var browser = new WebView();
      browser.Source = "https://google.com";
      Content = browser;
    }
}

答案 1 :(得分:0)

  

但是,它只是导航到新页面而从不触发Web视图,因此它只是一个空白屏幕。

根据Mainpage.xaml.cs的代码,您导航到新页面(Website),而不是您创建的Websitemain页面。

根据Website.xaml.cs的代码,内容页面的名称为网站主体。您需要保持其名称一致。

修改 Mainpage.xaml.cs 如下:

public MainPage()
{
      InitializeComponent();
}

private async void OnButtonClickedwebsite(object sender, EventArgs e)
{
      await Navigation.PushAsync(new Websitemain());
}

Website.xaml.cs 应该更改为 Websitemain.xaml.cs

public partial class Websitemain : ContentPage
{
    public class Webview : ContentPage
    {
       private void Websitemain()
       {
          //await Navigation.PushAsync(new Website());
          var browser = new WebView();
          browser.Source = "https://google.com";
          Content = browser;
       }
     }
}

然后您的代码即可使用。