0

我有一个 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;
}
4

5 回答 5

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;
    }
于 2013-10-18T12:26:34.077 回答
1

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

progressbar.Visibility = Visibility.Collapsed; 
于 2013-10-18T12:11:42.877 回答
0

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

于 2013-10-18T12:04:48.100 回答
0

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

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

 progressbar.IsIndeterminate = false;
于 2013-10-18T12:18:54.097 回答
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 的名称,并且

于 2015-08-04T08:09:43.537 回答