如何在WP8 WebBrowser控件加载URL之前显示进度条?

时间:2013-10-18 11:57:25

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

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

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

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;
}

5 个答案:

答案 0 :(得分:2)

这可以通过使用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;
    }

答案 1 :(得分:1)

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

progressbar.Visibility = Visibility.Collapsed; 

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

当然,使用以下命令暂停每个回调/处理程序的进度:

 progressbar.IsIndeterminate = false;

答案 4 :(得分:0)

我使用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的名称