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
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, возникла такая проблема: Я использую dll в проекте C#Но когда я пытаюсь запустить exe, он не запускается ( участок кода, который использует...
Подскажите хорошую библиотеку для создания музыкального плеера и как установить эту библиотеку