WPF: запрос пользователя с помощью модального диалогового окна / InputDialog - PullRequest
2 голосов
/ 04 января 2011

В приложении WPF мне нужно получить одну строку информации от пользователя, и я не хочу использовать модальное диалоговое окно.Однако, похоже, для этого нет предустановленного диалога.Какой простой и легкий способ сделать это.Я нахожу это немного сложным, пытаясь выяснить это с помощью многих версий диалогов и тому подобного.

Уже я должен был использовать OpenFileDialog и SaveFileDialog.Чем отличаются их версии, такие как Microsoft.Win32 и System.Windows.Form?

1 Ответ

7 голосов
/ 04 января 2011

Ничего особенного вам не нужно делать, чтобы показать модальное диалоговое окно в WPF.Просто добавьте Window в ваш проект (скажем, имя класса MyDialog), а затем выполните:

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

Window.ShowDialog, чтобы окно отображалось вмодальная манера.

Пример:

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();
    }
}

В вашем коде где-то:

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
}
...