WPF: Dialoge vor der eigentlichen App öffnen

27/09/2007 - 12:51 von Michaela Meier | Report spam
Hallo,

Ich steh hier total auf dem Schlauch.
Ich versuche in WPF etwas zu erreichen, was ich schon seit VB3-Zeiten mit
ein paar simplen Handgriffen in der "Sub Main" bewerkstellige: Vor dem Start
des eigentlichen Hauptfenster soll z.B. ein Login erfolgen und/oder eine
Konfiguration vorgenommen werden.
Es kann sogar sein, daß sich nach einem Login überhaupt erst entscheidet,
welches Fenster das Hauptfenster sein soll - ein Admin bekommt eine ganz
andere Oberflàche zu sehen als ein normaler Benutzer. Es hilft also nicht
viel, diese ganzen Abfragen in den Start "des" Hauptfensters zu packen.

Auch in VS 2005 scheint das alles kein Problem zu sein.

static void Main ()
{
Application.EnableVisualStyles ();
Application.SetCompatibleTextRenderingDefault (false);

Form2 frmLogin = new Form2 ();
DialogResult rLogin = frmLogin.ShowDialog ();
frmLogin.Dispose();
if (rLogin != DialogResult.OK) {
//rauswurf
return;
}

Form3 frmFolder = new Form3 ();
DialogResult rFolder = frmFolder.ShowDialog ();
frmFolder.Dispose();
if (rFolder !=DialogResult.OK) {
//rauswurf
return;
}

// ... usw ...

// der User hat's doch bis hierhin geschafft
Application.Run (new Form1 ());
}


In WPF versuche ich mich wie in MSDN beschrieben in die App.xaml
einzuklinken.
Und zwar mit
<Application .. Startup="StartUp">
und

public partial class App : Application
{
public void StartUp(object sender, StartupEventArgs e)
{
Window2 frmLogin = new Window2 ();
bool? rLogin = frmLogin.ShowDialog ();
if ((bool) !rLogin) {
//rauswurf
return;
}

Window3 frmFolder = new Window3 ();
bool? rFolder = frmFolder.ShowDialog ();
if ((bool) !rFolder) {
//rauswurf
return;
}

// ... usw ...

// der User hat's doch bis hierhin geschafft
Window1 frmMain=new Window1();
frmMain.Show();
}
}


Bei der Anzeige von Window1 werde ich jedoch wahlweise beschimpft
("Unbekanntes URI-Pràfix") oder Initialize wird zwar aufgerufen, aber das
Fenster wird nicht angezeigt und die Applikation still und heimlich (ohne
Fehlermeldung) beendet.
Es ist mir auch unmöglich, einen Dialog ein zweites Mal anzuzeigen (z.B. um
ein fehlgeschlagenes Login zu wiederholen). Dann erhalte ich ebenfalls
"Unbekanntes URI-Pràfix".

Kann mir mal bitte jemand beim Dàmonen austreiben helfen? Das muß doch
irgendwie lauffàhig zu bekommen sein :-)

Michaela
 

Lesen sie die antworten

#1 Karlheinz Godo
27/09/2007 - 21:48 | Warnen spam
Hallo Michaela!

Ich nehme mal an, dass bei dir Window1, Window2, und Window3 alle
vom selben Klassentyp: Window Class sind? Richtig?

Wenn dem so ist, muß die Instanzierung (new Window) deines Main Fenster vor
der Instanzierung deiner Dialog Fenster erfolgen. Warum das so ist, steht
in der MSDN: About Window Class.

Bei der Anzeige von Window1 werde ich jedoch wahlweise beschimpft
("Unbekanntes URI-Pràfix")



Die Angabe Startup und StartupUri in XAML kannst du dir sparen, wenn du
im Code OnStartup überschreibst.

Grüsse - Karlheinz

Ähnliche fragen