我有一个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;
}
答案 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事件LoadCompleted和NavigationFailed。
当然,使用以下命令暂停每个回调/处理程序的进度:
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的名称