На първо място, ние сме в C#, WPF, десктоп приложение (може да бъде .NET 3.5).
Трябва да покажа прозорец за влизане при стартиране на приложението, ако влизането е успешно, скриване на прозореца за влизане и показване на главния прозорец на приложението. Освен това, когато главният прозорец е затворен, трябва отново да видите прозорец за влизане. Ако прозорецът за влизане е затворен, приложението се затваря.
Бонус за по-трудно: когато е отметната опцията „Запомни потребителя“, прозорецът за влизане се пропуска и потребителят влиза автоматично, показвайки незабавно главния прозорец. (моля, не мислете как се съхранява опцията, приемете, че просто я знаете и имате стойността в променлива).
Какво трябва да бъде началната точка на приложението (означава кой прозорец се счита за свойството StartupUri на app.xaml)?
Как бихте решили архитектурата? Най-добрият начин ли е да използвате събитието App_Startup и да покажете някакъв прозорец от тази точка?
Какъв тип App.ShutdownMode бихте използвали? И как ще работи това? Можете да използвате „OneLastWindowClose“, „OnMainWindowClose“ или „OnExplicitShutdown“. Какъв е вашият избор и защо?
Като цяло ме интересува "какво извиква какво, какво е 'root' на приложението, какво предизвиква затваряне на приложението".
Вече имам решение за моя проблем, което работи, но ме интересува дали някой от вас се е сблъсквал с този проблем и как го е решил? С удоволствие ще споделя моя подход, но не искам да ограничавам вашите идеи на първо място.
Благодаря ви за вашия принос.
P.S.: Използвам MVVM framework, което го прави малко по-объркано, но смисълът остава. Аз също използвам Ninject като IoC, но този проблем все още, разбира се, остава. Не споменах тази информация, за да направя въпроса възможно най-ясен. Също така трябва да обработвам изключения (комуникацията със сървъра или db по време на влизане може да се провали) и за да го направя наистина интересно, трябва да покажа интерактивен 'splashwindow', показващ какво прави приложението (зареждане, комуникация със сървъра, автоматично влизане). Но моля, стойте далеч от тези изисквания в момента, можем да ги обсъдим по-късно.