martedì 27 gennaio 2009

DialogResult in WPF

In WPF la logica del DialogResult è leggermente diversa da quella delle WindowsForm, infatti i valori che può assumere una DialogResult sono True o False (False è il predefinito).

In una finestra di dialogo è in genere disponibile un pulsante speciale per l'annullamento, che corrisponde al pulsante la cui proprietà IsCancel è impostata su true. Un pulsante configurato in questo modo consente di chiudere automaticamente una finestra quando un utente lo seleziona o preme ESC. In entrambi i casi, DialogResult rimane false.
In una finestra di dialogo è in genere disponibile anche un pulsante speciale per l'accettazione, che corrisponde al pulsante la cui proprietà IsDefault è impostata su true. Un pulsante configurato in questo modo genererà l'evento Click quando l'utente lo seleziona o preme INVIO. Tuttavia, la finestra di dialogo non verrà chiusa automaticamente e DialogResult non verrà impostata su true. È necessario scrivere manualmente questo codice, in genere dal gestore dell'evento Click per il pulsante predefinito.
Dopo la chiusura di una finestra di dialogo, è possibile ottenere il risultato dal valore restituito dal metodo ShowDialog o controllando la proprietà DialogResult.
DialogResult può essere impostata solo quando un oggetto Window viene aperto chiamando il metodo ShowDialog.
Esempio Apertura ShowDialog:

MyDialog dialog = new MyDialog();
dialog.ShowDialog();
if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
MessageBox.Show("User clicked OK");
else
MessageBox.Show("User clicked Cancel");


nella Window ShowDialog sono inseriti 2 bottoni (Ok, e Cancel) così gestiti:

Button Width="100" Content="OK" IsDefault="True" Click="ButtonOkClick"/
Button Width="100" Content="Cancel" IsCancel="True"/


e l'evento del bottone OK va ad impostare il valore della ShowDialog:

DialogResult = true;

Nessun commento: