2016-04-12 4 views
0

Я разрабатываю универсальное приложение Windows, в котором размещается веб-приложение, использующее webview. следующие шаги.Навигация на платформе Universal Windows

  1. Создание пустого универсального окна приложения. Создание экрана заставки. Установите заставку в качестве начальной страницы. После всей активности, которую я хотел бы , перейдите на главную страницу, на которой есть элемент управления веб-представлением.
  2. Установка URL-адреса «http: www.google.come» в качестве источника для веб-представления. все, что работает отлично, но главная страница требует времени, где я бы хотел увидеть тот же всплеск, пока он не загрузится.
  3. Код для навигации Я использую this.Frame.Navigate (typeof (MainPage));

полный исходный код

public sealed partial class ExtentedSpash : Page 
{ 
    public ProgressMessage Progress; 
    public ExtentedSpash() 
    { 
     this.InitializeComponent(); 
     Progress = ProgressMessage.GetMessage(); 
     DataContext = Progress; 
     Window.Current.Activate(); 
     Loaded += Splash_Loaded; 
    } 

    private async void Splash_Loaded(object sender, RoutedEventArgs e) 
    { 
     await Initialize(); 
     Window.Current.Activate(); 

     await ClearBrowserCache(); 
     Window.Current.Activate(); 

     //Task.WaitAll(TaskList.ToArray()); 
     await StartApplication(); 
    } 


    public async Task Initialize() 
    { 
     Progress.ActionMessage = "Initialize the controls"; 
     await Task.Delay(TimeSpan.FromSeconds(10)); 
    } 
    public async Task ClearBrowserCache() 
    { 
     Progress.ActionMessage = "Clear Browser Cache"; 
     await Task.Delay(TimeSpan.FromSeconds(10)); 
    } 

    public async Task StartApplication() 
    { 
     Progress.ActionMessage = "Loading"; 
     await Task.Delay(TimeSpan.FromSeconds(10)); 
     this.Frame.Navigate(typeof(MainPage)); 
    } 

    private void btnMain_Click(object sender, RoutedEventArgs e) 
    { 

    } 
} 
public class ProgressMessage : INotifyPropertyChanged 
{ 
    private string statusMessage; 

    public string StatusMessage 
    { 
     get { return statusMessage; } 

     set 
     { 
      statusMessage = value; 
      RaiseProperChanged(); 
     } 
    } 

    private string actionMessage; 

    public string ActionMessage 
    { 
     get { return actionMessage; } 

     set 
     { 
      actionMessage = value; 
      RaiseProperChanged(); 
     } 
    } 
    private bool showProgress; 

    public bool ShowProgress 
    { 
     get { return showProgress; } 
     set { showProgress = value; 
      RaiseProperChanged(); 
     } 
    } 


    public static ProgressMessage GetMessage() 
    { 

     var msg = new ProgressMessage() 
     { 
      StatusMessage = "Initializing Application", 
      ActionMessage = "One moment please...", 
      showProgress = true 
     }; 

     return msg; 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void RaiseProperChanged(
     [CallerMemberName] string caller = "") 
    { 

     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(caller)); 
     } 

    } 


} 

}

Я хочу, чтобы "On Загрузка" сообщение должно показать сезам она полностью загружает приложение.

+0

Это нормально, если вы показываете сообщение после того, как оно перешло в «MainPage», исчезнет, ​​пока источник веб-просмотра не будет полностью загружен? Прежде чем источник «WebView» будет полностью загружен, он покажет пустую область, которую вы хотите покрыть этой областью? –

+0

Спасибо, Грейс, я хочу что-то вроде этого –

ответ

1

Как мы уже обсуждали, если вы просто хотите, чтобы покрыть WebView когда это источник не является полной загрузке, вы можете сделать это следующим образом:

<Page.Resources> 
    <Storyboard x:Key="MyTextSTD" x:Name="MyTextSTD" RepeatBehavior="Forever"> 
     <ColorAnimationUsingKeyFrames Storyboard.TargetName="tbbrush" Storyboard.TargetProperty="Color" Duration="0:0:10"> 
      <DiscreteColorKeyFrame KeyTime="0:0:0" Value="Red" /> 
      <LinearColorKeyFrame KeyTime="0:0:5" Value="Blue" /> 
      <LinearColorKeyFrame KeyTime="0:0:10" Value="Purple" /> 
     </ColorAnimationUsingKeyFrames> 
    </Storyboard> 
</Page.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <WebView Source="https://msdn.microsoft.com/library/windows/apps/xaml/mt244352.aspx" NavigationCompleted="WebView_NavigationCompleted"> 
    </WebView> 
    <Grid x:Name="loadingGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Visibility="Visible"> 
     <TextBlock Text="On Loading..." FontSize="50" VerticalAlignment="Center" HorizontalAlignment="Center"> 
      <TextBlock.Foreground> 
       <SolidColorBrush x:Name="tbbrush" /> 
      </TextBlock.Foreground> 
     </TextBlock> 
    </Grid> 
</Grid> 

и код позади:

public MainPage() 
{ 
    this.InitializeComponent(); 
    MyTextSTD.Begin(); 
} 

private void WebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) 
{ 
    loadingGrid.Visibility = Visibility.Collapsed; 
} 

Здесь довольно просто, я использую TextBlock и некоторую цветную анимацию, чтобы показать сообщение. И это сообщение исчезнет, ​​когда источник WebView будет полностью загружен.

Смежные вопросы