Это хорошая практика для вызова .Show () или .ShowDialog внутри конструктора диалога - PullRequest
0 голосов
/ 02 июля 2018

Рекомендуется ли вызывать метод .Show () или .ShowDialog () в качестве последней строки конструктора окон WPF? Единственная причина состоит в том, чтобы упростить использование моего класса окна - создавая его экземпляр, я уже отображаю его.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

есть сценарий с наследованием, когда предложенный вами подход впечатляет:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        Title = "W 1";
        ShowDialog();
    }
}

public partial class Window2 : Window1
{
    public Window2()
    {
        InitializeComponent();
        Title = "W 2";
    }
}

попытка создать var w = new Window2(); будет блокировать выполнение ctor Window2, пока модальное окно с заголовком "W 1" не будет закрыто. w.ShowDialog() выдаст исключение после этого.

в обычных кодировках пользователь может захотеть установить некоторые свойства Window перед его отображением, например, установить DataContext.

так что не нарушайте принцип единой ответственности, и пусть конструктор и метод ShowDialog выполняют свою работу отдельно

0 голосов
/ 02 июля 2018

Я бы сказал, плохая практика. Что если вы хотите создать экземпляры, не показывая их?

Вместо этого вы можете предоставить фабричный метод, который делает это:

public static void ShowMyDialog(string text)
{
    // initialize an instance of this dialog 
    // ... and then show
    instance.ShowDialog();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...