2017-04-19 2 views
0

Ich habe ein Fenster, es wird etwas überprüfen, bevor es angezeigt wird.Wie kann man ein WPF-Fenster vor dem Laden schützen/schließen?

Wenn "einige Überprüfung" fehlschlagen, wird der obige Code mein Fenster sofort nach dem Laden des Fensters geschlossen. Dies ist jedoch zu spät, weil ich das Fenster nur erscheinen und verschwinden sehen kann.

Wie kann ich mein Fenster schließen, ohne es anzuzeigen?

EDIT: Derjenige, der MyDlg bauen wird, ist wie:

MyDlg dlg = new MyDlg(); 
dlg.ShowDialog(); 

Aber es ist schwer für mich ‚Showdialog()‘ zu verhindern, fordern, weil sie von anderen Leuten geschrieben werden (Ich versuche, um in einer Bibliothek MyDlg zu schreiben)

+0

Wer baut MyDlg? und verwenden Sie außerdem Google http://StackOverflow.com/Questions/1539958/WPF-showing-dialog-before-main-window – ilansch

+2

Warum lassen Sie es öffnen? Kannst du es nicht schon vor dem Öffnen einschränken? –

+0

Ich würde lieber den Check verschieben, um innerhalb Load Event zu sein. –

Antwort

1

Wie kann ich mein Fenster zu schließen, ohne es zeigen?

Führen Sie die Überprüfung vor dem Aufruf der Methode Show oder ShowDialog des Fensters durch. Sie könnten entweder tun dies in dem Aufruf-Code:

MyDlg dlg = new MyDlg(); 
//perform your check here... 
dlg.ShowDialog(); 

... oder im Konstruktor des MyDlg Fenster:

public MyDlg() 
{ 
    //perform your check here... 
} 

Offensichtlich ist das Fenster bereits durch die Zeit der Window_Initialized Event-Handler wird gezeigt aufgerufen, so dass es zu spät ist, eine Überprüfung durchzuführen, wenn das Fenster nicht angezeigt werden soll. Sie können ein Fenster, das nicht geöffnet wurde, nicht schließen.

+0

Danke, vielleicht vor 'ShowDialog()' forcieren, ist die beste Lösung. – Dia

0

Sie können den Splash-Dialog in Ihrem neuen Fenster erstellen.

Und setzen Sie IsEnabled = False auf Fenster/Dialog.

Oder, wenn Ihre Operation schnell ist, dann gibt es keine Notwendigkeit für Splash. Nur verstecken Sie Ihre Fenster:

<Window x:Class="Wpf.Test01.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:Wpf.Test01" 
     xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
     mc:Ignorable="d" 
     IsEnabled="False" 
     WindowStyle="None" 
     AllowsTransparency="True" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Background> 
     <SolidColorBrush Opacity="0.0" Color="White" /> 
    </Window.Background> 

Sie können es hier getan siehe WPF Window with transparent background containing opaque controls

Natürlich die Eigenschaften zurück zu sichtbar/default ändern, wenn alles in Ordnung ist

Verwandte Themen