【问题标题】:How to show progressbar until WP8 WebBrowser control loaded the URL?如何在 WP8 WebBrowser 控件加载 URL 之前显示进度条?
【发布时间】:2015-08-04 16:45:51
【问题描述】:

我有一个 WebBrowser 控件,我想在这个控件上显示一些 url。在浏览器加载页面之前,我需要显示一些进度条或动画。

请帮帮我,这是我所拥有的:

XAML:

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <ProgressBar x:Name="progressbar" IsIndeterminate="True"/>
    <phone:WebBrowser x:Name="webbrw" IsScriptEnabled="True"/>
</Grid>

强文本

public MainPage()
{
    InitializeComponent();

    // Sample code to localize the ApplicationBar
    //BuildLocalizedApplicationBar();
    Loaded += MainPage_Loaded;
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    webbrw.LoadCompleted += webbrw_LoadCompleted;
    webbrw.Source = new Uri("http://www.youtube.com/user/tseries");
}

void webbrw_LoadCompleted(object sender, NavigationEventArgs e)
{
    progressbar.IsIndeterminate = false;
}

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-8


    【解决方案1】:

    这可以通过使用LoadCompleted 属性来实现。希望这能解决您的问题。

    XAML 应该是这样的:

    <ProgressBar x:Name="progressbar" IsIndeterminate="True"/>
    <phone:WebBrowser x:Name="webbrw" IsScriptEnabled="True" LoadCompleted="yesLoaded"/>
    

    C# 用于此;

        private void yesLoaded(object sender, NavigationEventArgs e)
        {
            this.progressbar.Visibility = Visibility.Collapsed; 
            this.progressbar.IsIndeterminate = False;
        }
    

    【讨论】:

      【解决方案2】:

      如果您只是想在加载页面时显示该栏并在之后隐藏它,那么您使用了错误的属性。 IsIndeterminate 属性报告通用进程 (true) 或基于值的进程 (false)。要隐藏进度条,您应该使用:

      progressbar.Visibility = Visibility.Collapsed; 
      

      【讨论】:

      • 如何显示进度条?如果我不使用 IsIndeterminate ==true (这些点来来去去)
      • 我想显示一些动画或进度条之类的东西:),请帮忙
      • 您的 XAML 代码没问题,但在浏览器的完成事件中使用我提供的代码行。
      【解决方案3】:

      尝试使用 Navigate 方法并捕获 Navigated 事件,而不是在控件成功导航后触发。查看MSDN参考http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.controls.webbrowser_events(v=vs.105).aspx

      【讨论】:

        【解决方案4】:

        为了处理所有可能的情况,我必须注册这两个 WebBrowser 事件 LoadCompletedNavigationFailed

        当然,在每个回调/处理程序中暂停进度:

         progressbar.IsIndeterminate = false;
        

        【讨论】:

          【解决方案5】:

          我使用OnNavigatedTo方法来初始化进度条,如下图:

          protected override void OnNavigatedTo(NavigationEventArgs e)
                  {
                      progressbar.IsIndeterminate = true;
                      //u can add other codes you need
                  }
          

          然后使用LoadCompleted方法检查浏览器是否完全加载,如下所示:

           private void Browser_LoadCompleted(object sender, NavigationEventArgs e)
                  {
                      progressbar.IsIndeterminate = false;
                  }
          

          请注意,进度条是我在 xaml 上为 ProgressBar 指定的名称,并且

          【讨论】:

            猜你喜欢
            • 2021-05-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多