2016-06-24 27 views
1

Ich bin mit Vorlage 10 und möchte meinen Begrüßungsbildschirm wie folgt aussehen:Get Erweiterte Splashscreen mit Rund ProgressBar Around Bild

enter image description here

enter image description here

enter image description here

ich den Kreis bekommen haben Fortschritt Bar-Steuerelement Here und bekam es um ein Bild durch Grace Feng Hilfe von diesem Code Link

Jetzt möchte ich diese Runde Fortschrittskontrolle in meinem Splash-Bildschirm, so dass es wie die obigen Bilder aussehen, aber in der erweiterten Splash-Bildschirm Link-Tutorial zeigen sie es von Leinwand und ich möchte es durch Moprogress Kontrolle über jede Idee, wie dies zu implementieren Steuerung in erweiterten Splash-Screen.Wenn ich es nur in splash.xaml verwenden, dann baut meine App und starten, aber dann hängt es.Buts Entfernen dieses Steuerelement es läuft perfekt.Alle Hilfe wäre willkommen. Danke.

immer diese Fehlermeldung in Grace Feng Probe: Error

Error2

+1

Wenn Sie das Debugger verwenden, wird es in Ihrem Statusanzeige eines Ihrer Code zeigen jemals bekommen:

Eine einfache Möglichkeit, diese Ausnahme zu behandeln, können Sie eine „versuchen fangen“ auf diesen Code wie folgt hinzufügen namens? Wird der Abweisungshandler Ihres Codes aufgerufen? Auch für andere, die diese Frage lesen, finden Sie das Tutorial referenziert hier https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868191.aspx?f=255&MSPPError=-2147217396 – Joel

Antwort

1

aber im erweiterten Begrüßungsbildschirm Link Tutorial sie es durch Leinwand zeigen, und ich will es tun, indem Myprogress eine Idee steuern, wie um dieses Steuerelement im erweiterten Begrüßungsbildschirm zu implementieren.

Obwohl es Canvas im official document verwendet den Inhalt des erweiterten Begrüßungsbildschirm anzuzeigen, besteht keine Notwendigkeit, wie das Dokument genau gleiche zu codieren, ist der Code im Dokument nur ein Beispiel. Auch wenn Sie keine neue leere Seite für einen erweiterten Begrüßungsbildschirm erstellen müssen, können Sie hierfür auch eine UserControl erstellen.

Weitere Informationen zur Verwendung von Extended Splash Screen in Template 10 finden Sie unter Template10: a new template to create Universal Windows apps – The basics.

mein Beispiel Also hier ist, habe ich eine UserControl namens ExtendedSplash:

<Grid Background="#00b2f0"> 
    <mycontrols:RoundProgressControl x:Name="ProgressControl" HorizontalAlignment="Center" VerticalAlignment="Center" 
            Size="300" LineWidth="8" Color="Orange" /> 
</Grid> 

Der Code hinter ist sehr einfach nur die TimeTikcer des Kreis progressbar Handhabung:

public sealed partial class ExtendedSplash : UserControl 
{ 
    private Timer TheTimer = null; 
    private object LockObject = new object(); 
    private double ProgressAmount = 0; 
    public ExtendedSplash() 
    { 
     this.InitializeComponent(); 
     this.Loaded += (sender, e) => 
     { 
      TimerCallback tcb = HandleTimerTick; 
      TheTimer = new Timer(HandleTimerTick, null, 0, 30); 
     }; 

     this.Unloaded += (sender, e) => 
     { 
      lock (LockObject) 
      { 
       if (TheTimer != null) 
        TheTimer.Change(Timeout.Infinite, Timeout.Infinite); 
       TheTimer = null; 
      } 
     }; 
    } 

    public void HandleTimerTick(Object state) 
    { 
     lock (LockObject) 
     { 
      ProgressControl.SetBarLength(ProgressAmount); 
      ProgressAmount += 0.006; 
      if (ProgressAmount > 1.5) 
       ProgressAmount = 0.0; 
     } 
    } 
} 

Um dieses ExtendedSplash zu verwenden , können Sie in der App.xaml.cs Dateicode wie folgt:

sealed partial class App : Template10.Common.BootStrapper 
{ 
    public App() 
    { 
     InitializeComponent(); 
     SplashFactory = e => new ExtendedSplash(); 
    } 

    public override async Task OnInitializeAsync(IActivatedEventArgs args) 
    { 
     await Task.CompletedTask; 
    } 

    public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args) 
    { 
     await Task.Delay(TimeSpan.FromSeconds(6)); 
     NavigationService.Navigate(typeof(Views.MainPage)); 
    } 
} 

Der Grund, warum SplashFactory verwendet wird, wird in dem oben angegebenen Blog erläutert. Und Sie können meine sample here finden.

Update:

Zu allererst dieser Code Fehler ist nicht mein Code, das Ihr bereitgestellt Kreisfortschrittsbalken ist. Und das ist ein COM-basierter API-Fehlercode. Die Fehlermeldung ist ziemlich klar: Der Nachrichtenfilter zeigte an, dass die Anwendung beschäftigt ist. Wie Sie sagten, "während es sich im erhängten Zustand befindet", ist dieser Fehler aufgetreten.

public void SetBarLength(double Value) 
{ 
    try 
    { 
     if (DesignMode.DesignModeEnabled) 
      SetBarLengthUI(Value); 
     else if (CoreApplication.MainView.CoreWindow.Dispatcher.HasThreadAccess) 
      SetBarLengthUI(Value); 
     else 
     { 
      double LocalValue = Value; 
      IAsyncAction IgnoreMe = CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => { SetBarLengthUI(Value); }); 
     } 
    } 
    catch (Exception e) 
    { 
     Debug.WriteLine(e.ToString()); 
    } 
} 
+0

Hallo @Grace_Feng sogar in Ihrem Beispiel nach erweitertem Splashscreen hängt Ihre App ich meine, Sie können nicht die Größe ändern oder zu navigieren (in Ihrer Probe gab es nichts zu navigieren), aber es hängt einfach.Und nach irgendwann System.Exception.Tried Debuggen konnte aber nicht lösen.Anny soln? Danke noch einmal! – Uwpbeginner

+0

@Uwpbegner, hast du meine Probe auf Github heruntergeladen? Es funktioniert bei mir gut. Ich kann es nicht verstehen, ich habe keine Größenänderungs- und Navigationsereignisse im erweiterten Begrüßungsbildschirm gehandhabt. –

+0

@Grace_Feng nach dem Ausführen der App (während es sich im gehängten Zustand befindet) tritt dieser Fehler auf (Screenshots in meiner Frage). Bitte werfen Sie einen Blick darauf. Danke noch einmal!. – Uwpbeginner