2016-06-24 9 views
0

Meine Anwendung benötigt fast 4 Sekunden, um vollständig herunterzufahren, nachdem der Benutzer das Herunterfahren bestätigt hat. Ich versuche innerhalb dieser 3 Sekunden dem Benutzer etwas Aktivität und vielleicht einen Fortschritt zu zeigen. So würde das Szenario etwas ähnlich sein wieSo stellen Sie "Laden" in einer GUI dar

ButtonClose_Click() -> Sind Sie sicher, dass Sie beenden möchten? -> Ja -> „Schließen“

Ich habe versucht, nur ein Fenster anzuzeigen (messagebox), aber ich bin mit DevExpress Fenster und sie sind entweder OkCancel, Ok, YesNo und YesNoCancel so im Grunde braucht es eine Benutzereingabe weiter:

Application.Current.Dispatcher.Invoke(
    () => 
    { 
     DXMessageBox.Show(Application.Current.MainWindow, 
     "Text Here..", "Title Here.. ", MessageBoxButton.OKCancel, MessageBoxImage.Information); // Ok by Default 
    }); 

Das ist, was ich habe:

var result = DXMessageBox.Show(Application.Current.MainWindow, 
    "Are you sure you want to EXIT the application?", 
    "Attention", MessageBoxButton.OKCancel, MessageBoxImage.); 

if (result == MessageBoxResult.OK) 
{ 
    //   
    // I want to show or display some "loading" activity here till the below code finishes executing" 
    // 

    mainViewModel.SaveDatabase(); // save database+ 
    mainViewModel.CaptureViewModel.cameraController.TurnCameraLights(false, false, false); // turn off some lights 
    mainViewModel.CaptureViewModel.Uninitialize(); // clear stuff 
    Environment.Exit(0); 
} 

Wie könnte ich das angehen?

+1

Was ist mit dem Standard-Cursor beschäftigt? –

+0

@Cody das ist eine gute Idee, aber es gibt keine Maus. Es ist eine Touch-Anwendung und auf Tablets –

+0

Warum der Downvote? –

Antwort

1

Hier ist ein einfacher Busy-Indikator, den ich ein paar Mal verwendet habe. Sie brauchen nur eine Eigenschaft IsBusy in Ihrem Viewmodel. Platziere das Ganze über den restlichen Steuerelementen.

Das Beste ist, dass es während der Bearbeitung in der Designansicht nicht über Ihre Steuerelemente angezeigt wird!

 <Grid> 
     <!--all of your controls--> 

      <!--Loading Indicator--> 
      <Border x:Name="_LoadingIndicator" Background="#AA000000"> 
       <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red" FontSize="80">Loading...</TextBlock> 
       <Border.Style> 
        <Style TargetType="Border"> 
         <Setter Property="Visibility" Value="Collapsed"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Path=IsBusy}" Value="True"> 
           <Setter Property="Visibility" Value="Visible"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Border.Style> 
      </Border> 
     </Grid> 

Hier ist, was es wird wie folgt aussehen: Here is what it looks like.

+0

Ich habe es versucht und es ist in Ordnung, als ein Hinweis darauf, dass die Anwendung geschlossen wird verwendet werden. Aber was, wenn ich mehrere Ansichten habe? Ich muss das auf jedem XAML und ViewModel richtig hinzufügen? –

+0

Sie müssen es zu dem Fenster hinzufügen, in dem die Anzeige "Loading ..." angezeigt werden soll. Ich wette, Sie könnten wahrscheinlich eine Kontrolle, die das standardmäßig hat ... –

Verwandte Themen