public partial class App
{
public App()
{
if (Settings.Default.localPort == 0 || Settings.Default.remotePort == 0 ||
Settings.Default.ip == "no_ip")
{
SettingsView settingsView = new SettingsView();
settingsView.ShowDialog();
ProgramInfo.Create(Settings.Default.localPort,
Settings.Default.remotePort, Settings.Default.ip);
}
ProgramInfo.Create(Settings.Default.localPort,
Settings.Default.remotePort, Settings.Default.ip);
MainView mainView = new MainView();
mainView.Show();
}
}
Если значения параметров нулевые - запускается окно настроек, где должен их ввести (сохранения настроек проихводится в SettingsViewModel). Проблема: не запускается окно mainView, хотя конструктор MainViewModel срабатывает, но после просто программа закрывается, никаких ошибок - ничего. Если настройки уже введены (то есть окно настроек не открывается), то mainView открывается и всё работает как надо.
Скорее всего у вас просто сетается главным окно SettingsView и после его закрытия стопается программа.
К слову, прочитайте про Application.Startup.
Попробуйте так:
public partial class App
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var shouldShowSettings = Settings.Default.localPort == 0
|| Settings.Default.remotePort == 0
|| Settings.Default.ip == "no_ip";
MainView mainView = new MainView
{
ShowInTaskbar = !shouldShowSettings,
Visibility = shouldShowSettings ? Visibility.Hidden : Visibility.Visible
};
mainView.Show();
if (shouldShowSettings)
{
SettingsView settingsView = new SettingsView();
settingsView.ShowDialog();
mainView.ShowInTaskbar = true;
mainView.Visibility = Visibility.Visible;
}
ProgramInfo.Create(Settings.Default.localPort,
Settings.Default.remotePort, Settings.Default.ip);
}
}
Думаю, проблема в том, что вы пытаетесь открыть диалог в конструкторе App. Приложение будет «запущено» после того, как объект будет сконструирован.
Попробуйте перенести логику с окнами в OnStartup.
И не забудьте переключить ShutdownMode в OnExplicitShutdown. И на закрытии главного окна таки вызвать Shutdown.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости