Sonntag, 30. Mai 2010

WPF Startup - a window too much...

So here is a simple problem: I want a login in my WPF application startup display just before the main window get created. Since the main window depends on the user entered I want to have that finished before all the binding automatism in my main window fire against services and the database.
So I removed the StartupUri from my App.xaml and did it myself in the OnAppStartup:

protected override void OnStartup(StartupEventArgs e)
{
var loginDialog = new LoginDialog();
bool? loginResult = loginDialog.ShowDialog();
if (!loginResult.HasValue || loginResult == false)
{
// exit application
return;
}
var mainWindow = new MainWindow();
mainWindow.Show();
}

Everything seems to be fine. Except that it's not working. The modal dialog pops up, but the main window never appears. In the debugger it clearly gets loaded, but the application is shut down immediately. Wait a moment, somewhere I read that the main window is treated specially...
Consulting the MSDN finally cleared things up: there is a property MainWindow which you can set to designate your main window. If you don't do that, the first window created will be the MainWindow - in my case the login dialog. But setting that property to your main window is not enough. I still had to handle a property called ShutDownMode. This is set to OnMainWindowClose by default. And apparently the shutdown was already initiated when the login window was closed. So I had to set this property to OnExplicitShutdown first (which could have been done in app.xaml also), then later on back to OnMainWindowClose.
So here is how it worked:

protected override void OnStartup(StartupEventArgs e)
{
ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
var loginDialog = new LoginDialog();
bool? loginResult = loginDialog.ShowDialog();
if (!loginResult.HasValue || loginResult == false)
{
// exit application
return;
}
var mainWindow = new MainWindow();
mainWindow.Show();
MainWindow = mainWindow;
ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
}

Freitag, 28. Mai 2010





Nachtrag mit Fotos. Es ist begeisternd solch eine saubere Baustelle zu sehen. Nur mit der Umzäunung hat's nicht so ganz hingehauen. Ansonsten hat der Tag nicht allzu viel zu bieten gehabt, mit Ausnahme des 400er Levels in Mafia Wars. Ich gehe mir jetzt wieder Life reinziehen.

Nachbaralarm

Es ist wirklich kaum zu glauben. Da lebt man 30 Jahre in der Einöde, nichts passiert links und rechts von einem, und auf einmal, unverhofft, trifft eine Einladung zu einer Bauverhandlung ein. Und kaum versieht man sich, stehen Bagger auf dem Nachbargrundstück, graben große tiefe Löcher, bärtige große Männer mit dicken Oberarmen schwirren herum, Lastwagen verstellen die Straße, dazwischen gelegentlich nicht ganz so kräftige Männer mit Gerätschaften, die ein Ingenieur-Studium erfordern. Da wollen doch tatsächlich Menschen Häuser bauen, in die dann andere Menschen einziehen wollen. Das unterstützt von der internationalen Mafia der Bauträger, Bausparkassen und Kreditinstitute. Zu allem Überfluss das Ganze noch staatlich gefördert. Unsere derzeitigen Nachbarn - die uns damals auch nicht gefragt haben ob wir sie als Nachbarn gut heißen - sind erschüttert. Ihre Versuche bei der Bauverhandlung das Projekt an Formalfehlern scheitern zu lassen sind missglückt, als letzte Bastion vor dem Einfall der Arbeiter- und Nachbar-mit-Kfz-Horden haben sie den "Gehweg" vor ihrem Haus mit Blumenkisteln gepflastert. Man kann dann als Fußgänger nur auf der Straße laufen, aber das ist man sowieso gewohnt. In unserem schönen Ort scheint das ein Bürgersport zu sein, den öffentlich Grund vor seinem Haus vor Betreten, Befahren und Beparken mit Hilfe von Pflanzen, Steinen und anderem zu schützen. Ich habe jedenfalls beschlossen, die ganze Sache ein wenig fotografisch zu dokumentieren und die Welt an dieser himmelschreienden Ungerechtigkeit teilhaben zu lassen und jeden zu erinnern: auch Du könntest plötzlich neue Nachbarn bekommen, und wer weiß was das für Leute sind! Mein zweiter Beschluß besteht übrigens darin, die neuen Nachbarn mit Kuchen und Hilfsangeboten zu begrüßen.

Donnerstag, 27. Mai 2010

Wissen in Konservendosen

Es beweist sich immer wieder, komplexe Dinge stehen und fallen mit dem der sie erfunden hat. Solange wir nicht das Wissen über Schläuche oder Telepathie von anderen abziehen und in Dosen verpacken können, bleibt das so. Alle Versuche insbesondere Programme - samt der dahinter liegenden Idee - zu dokumentieren schlagen fehl, entweder weil sie nie fertig wird und immer die Dinge gerade gebraucht werden, die nicht dokumentiert sind. Sollte es jemand schaffen, eine annähernd vollständige Dokumentation zu schreiben, ist diese meist von solchem Umfang dass sie nicht gelesen, geschweige denn verstanden wird.
Das alles spricht immer mehr dafür insbesondere Source Code so zu schreiben, dass er effektiv gelesen werden kann. Eine nicht gerade neue Weisheit, die aber immer noch mit manchen Entwicklern diskutiert werden muss. Allerdings ist es da nicht zu Ende. Es bleiben immer noch die Gründe übrig, warum es so ist wie es ist. Hier gibt es keine anderen Möglichkeiten, als zu dokumentieren oder die wichtigsten Entwickler künstlich am Leben zu erhalten.

Mittwoch, 26. Mai 2010

The vast emptiness of the Universe

Warum auch immer, dieser Post entstand unabsichtlich. Da ich leere Räume nicht leiden kann, sei es auf Plätzen, Webseiten oder das Weltall im allgemeinen (interessant sind ja nur die Sterne, und schwarze Löcher können keine leeren Räume sein, nachdem was sie an Materie verschlingen), fülle ich das halt mit Inhalt. Apropos Weltall, meine stümperhaften Versuche mit neuer digitaler Bildaufzeichnungs Gerätschaft diverse Gestirne in Bits und Bytes zu konservieren werden durch die etwas missliche Wetterlage jäh vereitelt. Fotografier ich halt Blumen.

The post that very likely no one will read...

Da sitzt man nun vor der technischen Umsetzung der Möglichkeit sich der gesamten Internet verwendenden Menschheit gegenüber zu äußern und sie mit seiner Weisheit und Erfahrung zu segnen, und es fällt einem nichts vernünftiges ein.
Wie auch immer, die Lektion des Tages ist folgende: seinen Fernet Branca sollte man nicht seinem Vater ausleihen, es könnte sein dass er nicht mehr zurückkommt.