ImmortalCAT
@ImmortalCAT
C# loving

Best practices открытия окна в WPF?

Как лучше открывать окна в WPF???
суть заключается в том что мне необходимо открыть 3 разных окна друг за другом
например сейчас я вызываю окно примерно так
var propPage = new SomeWindow(IEnumerable<Properties> items);
           var openResult = propPage.ShowDialog();
                 if (openResult.HasValue && openResult.Value)
                       //DoSomething

А например те три подряд выходит что приходится говнокодить
var propPage1 = new SomeWindow(IEnumerable<Properties> items);
            var openResult = propPage1.ShowDialog();
            if (openResult.HasValue && openResult.Value)
            {
                var propPage2 = new SomeWindow(IEnumerable<Properties> items);
                openResult = propPage2.ShowDialog();
                if (openResult.HasValue && openResult.Value)
                {
                    var propPage3 = new SomeWindow(IEnumerable<Properties> items);
                    openResult = propPage3.ShowDialog();
                    if (openResult.HasValue && openResult.Value)
                    {
                        //DoSomething
                    }
                }
            }

В итоге не знаю как это лучше организовать...
И ещё вопрос. после ShowDialog прихода результата, окно dispose-ится ли или только GUI-dispose происходит, т.к. мне необходимо вытащить из ViewModel данные...
  • Вопрос задан
  • 397 просмотров
Решения вопроса 2
Rou1997
@Rou1997
Код нормальный, вы Java не видели, ну если хотите избавиться от лишней вложенности блоков, используйте IF-NOT-RETURN.

после ShowDialog прихода результата, окно dispose-ится ли или только GUI-dispose происходит

Ничего не удаляется пока используется, потом сборщик мусора удаляет.
Ответ написан
Комментировать
artemgapchenko
@artemgapchenko
Ну вообще некрасиво, да. Код с большим количеством уровней вложенности (читай: больше двух) плохо читается и редактируется. Чтобы сделать код более "плоским", разверните по-другому структуру своих if-ов. То есть не так:

if (someValue) {
	if (someSecondValue) {
		if (someThirdValue) {
		    doSomething();
		}
	}
}

А так:

if (!someValue) {
	return;
}

if (!someSecondValue) {
	return;
}

if (someThirdValue) {
    doSomething();
}

Ну и те "откровения" про Java, что вам написали выше, имеют очень посредственную связь с реальностью. Написать запутанный код можно на чём угодно, это и отличает говнокодера от программиста. У говнокодера всегда язык виноват, программист же изучает свой инструмент, и знает как обойти слабые моменты.
Кстати, можете почитать "Совершенный Код" Макконелла, там несколько глав уделено тому, как лучше структурировать свой код.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AxisPod
@AxisPod
А зачем 3 окна, почему бы к примеру не использовать Wizard диалог.
Ответ написан
Комментировать
RyzhovAlexandr
@RyzhovAlexandr
люблю .NET, интересуюсь также Java, BigData
Рекомендую воспользоваться контейнером зависимостей, например Autofac, подробнее с примерами можно посмотреть тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы