Michaela Meier
2007-09-27 10:51:33 UTC
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
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