【问题标题】:WebView Progress ring windows 8.1 appWebView 进度环 windows 8.1 应用
【发布时间】:2014-05-08 03:09:31
【问题描述】:

我有一个问题,我想在 webview 中使用进度环,但它没有做我想做的事情。即使页面已加载,进度环也会保持不变。我还希望按钮在加载后出现。

这是我的代码:

xaml.cs:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// Die Elementvorlage "Leere Seite" ist unter http://go.microsoft.com/fwlink  /?LinkId=234238 dokumentiert.

namespace Euregio_Systems
    {
    /// <summary>
    /// Eine leere Seite, die eigenständig verwendet werden kann oder auf die     innerhalb eines Rahmens navigiert werden kann.
    /// </summary>
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        this.webBrowser.Navigate(new Uri("http://www.euregio-systems.com", UriKind.Absolute));
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        this.webBrowser.InvokeScript("eval", new[] { "history.go(-1)" });
    }


    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        this.webBrowser.Navigate(new Uri("http://www.euregio-systems.com", UriKind.Absolute));
    }

    private void Button_Click_3(object sender, RoutedEventArgs e)
    {
        this.webBrowser.InvokeScript("eval", new[] { "histroy.go(+1)" });
    }
    private void webBrowser_NavigationCompleted(object sender, NavigatingCancelEventArgs e)
    {
        pr1.IsActive = false;
        pr1.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
        webBrowser.Visibility = Windows.UI.Xaml.Visibility.Visible;
        fwd.Visibility = Windows.UI.Xaml.Visibility.Visible;
        backButton.Visibility = Windows.UI.Xaml.Visibility.Visible;
        homeButton.Visibility = Windows.UI.Xaml.Visibility.Visible;
    }
}
}

和 xaml

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <WebView Name="webBrowser" Visibility="Collapsed"/>
    <AppBarButton Visibility="Collapsed" Name="backButton" HorizontalAlignment="Left" Margin="-20,-4,0,0" VerticalAlignment="Top" Click="Button_Click_1" Icon="Back"/>
    <AppBarButton Visibility="Collapsed" Name="homeButton" HorizontalAlignment="Left" Margin="56,-4,0,0" VerticalAlignment="Top" Click="Button_Click_2" Icon="Home"/>
    <AppBarButton Visibility="Collapsed" Name="fwd" HorizontalAlignment="Left" Margin="132,-4,0,0" VerticalAlignment="Top" Icon="Forward" Click="Button_Click_3"/>
    <ProgressRing Visibility="Visible" Name="pr1" HorizontalAlignment="Center" VerticalAlignment="Center" IsActive="True" Height="163" Width="170" Margin="0" RequestedTheme="Light"/>

</Grid>
</Page>

【问题讨论】:

  • 您是否曾经在代码隐藏文件中订阅 NavigationCompleted 事件?
  • 如何订阅?

标签: c# windows-8 webview progress-bar windows-8.1


【解决方案1】:

您必须在代码中在网络浏览器上调用 Navigate 之前添加此行:

this.webBrowser.NavigationCompleted+= webBrowser_NavigationCompleted;

理想情况下,您应该在 WebView 的加载事件上执行此操作,可以像这样添加:

<WebView Name="webBrowser" Visibility="Collapsed" loaded="WebViewControl_Loaded"/>

【讨论】:

    【解决方案2】:

    如果您忘记订阅该事件,您应该打开表单/页面设计器并检查“闪电”图标以显示您可以订阅的事件,如此图所示

    只需查找 NavigationCompleted 事件并将您的回调方法名称 (webBrowser_NavigationCompleted) 放入。

    尽管这些天有点不鼓励使用这些事件。 MVVM 是开发 Windows 应用商店应用程序(或任何现代 WPF 应用程序)以充分利用 WPF 的绑定功能的首选方法。

    更新: 或者,如果您愿意,也可以订阅代码(只需确保在组件初始化后订阅即可):

    this.webBrowser.NavigationCompleted += webBrowser_NavigationCompleted;
    

    【讨论】:

    • 我没有任何“闪电”图标:O
    • 您必须切换到 Designer。您设计页面/对话框布局的地方。显示 UI 控件属性的位置。它是同一个窗口,您可以在其中切换属性和事件
    • @Tseng OP 要求 Windows 8 应用程序,您的解决方案是 Windows 窗体应用程序。
    • WPF 也支持事件,但不鼓励使用它们。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多