2011-01-04 5 views
2

In einer WPF-Anwendung muss ich eine Zeile Info vom Benutzer bekommen und ich möchte einen Modal Dialog verwenden. Es scheint jedoch keinen voreingestellten Dialog dafür zu geben. Was ist eine einfache und einfache Möglichkeit, dies zu tun. Ich finde es etwas kompliziert, dies mit den vielen Dialogs-Versionen herauszufinden.WPF: Benutzer mit Modal abfragen Dialogbox/InputDialog

Bereits musste ich OpenFileDialog und SaveFileDialog verwenden. Was ist der Unterschied zwischen Version von diesen wie Microsoft.Win32 und System.Windows.Form?

Antwort

7

Es gibt nichts Besonderes, was Sie tun müssen, um einen modalen Dialog in WPF anzuzeigen. Fügen Sie einfach einen Window zu einem Projekt (sagen wir mal der Klassenname MyDialog ist), und dann tun:

var dialog = new MyDialog(); 
dialog.ShowDialog(); 

Window.ShowDialog kümmert sich das Fenster in einem modalen Art und Weise zu zeigen.

Beispiel:

public class MyDialog : Window { 
    public MyDialog() { 
     this.InitializeComponent(); 
     this.DialogResult = null; 
    } 

    public string SomeData { get; set; } // bind this to a control in XAML 
    public int SomeOtherData { get; set; } // same for this 

    // Attach this to the click event of your "OK" button 
    private void OnOKButtonClicked(object sender, RoutedEventArgs e) { 
     this.DialogResult = true; 
     this.Close(); 
    } 

    // Attach this to the click event of your "Cancel" button 
    private void OnCancelButtonClicked(object sender, RoutedEventArgs e) { 
     this.DialogResult = false; 
     this.Close(); 
    } 
} 

In Ihrem Code irgendwo:

var dialog = new MyDialog(); 
// If MyDialog has properties that affect its behavior, set them here 
var result = dialog.ShowDialog(); 

if (result == false) { 
    // cancelled 
} 
else if (result == true) { 
    // do something with dialog.SomeData here 
} 
+0

Alle gut und gut, aber wie definieren Sie eine inputDialog, was erben Sie von und so? –

+0

@Ingo: Sie erben von 'Window'. Es gibt nichts Besonderes. – Jon

+0

Ich verstehe. Irgendein Tutorial, auf das Sie mich verweisen können, wie man das Bool in der ShowDialog Methode zurückgibt, und wie man auf die Eingabe und so zurückgreift? –