Windows 8 MessageBox was ein MessageDialog ist

Ja ich weis ich bin bekannt für meine Kenntnisse der deutschen Sprache. Übrigens ein Grund warum ich VB.NET nehme.

Eine MessageBox kennt man in Windows 8 und WinRT nicht, nicht einmal einen modalen Dialog. Optisch kommt allerdings der MessageDialog knapp heran.

image

Leider kann man nicht per XAML den Dialog definieren. Der Text wird über das Content Attribut oder bei Initialisierung gesetzt. Der Titel mit der gleichnamigen Eigenschaft.  Der MessageDialog muss per Code mit Elementen gefüllt werden. Möglich sind hier nur Buttons die per UICommand erstellt werden. Die Delegate Funktion kann auch inline als Lambda Prozedur angelegt werden. Darin können dann Werte gesetzt werden und so später im Code die Benutzer Entscheidung verwertet werden.

Dim msg As MessageDialog = New MessageDialog(storedFoto.Name)
msg.Commands.Add(New UICommand("Wahl A", Sub(command)
                                                     wert1 = True
                                                 End Sub))
msg.Commands.Add(New UICommand("Wahl B", Wahlb()))
msg.Commands.Add(New UICommand("Wahl C", Nothing, "C"))

msg.DefaultCommandIndex = 0
msg.CancelCommandIndex = 1 'ESC
Dim ret = Await msg.ShowAsync()

Die einfachere Lösung, mit Rückgabe, ist Variante C, die zur Laufzeit die Auswahl als Eigenschaft ID ausgibt.

image

Dies bezeichnet Microsoft als CommandID.

Im VB.NET Beispiel sieht man auch noch wie man den Abbruch per ESC Taste einem Button zuweist und welcher Button auf Return reagieren soll und damit vorbelegt wird.

Kommentare (1) -

Malte
08.06.2012 20:00:43 #

Waaaaaarum denn bitte VB.NET? Das nutzt doch nun wirklich keiner mehr. Schade, dass die sonst ganz guten Tipps damit versumpfen...

Kommentare sind geschlossen