Я занимаюсь разработкой приложения, имеющего 2 режима
- Режим конфигурации
- Режим выполнения
Оба режима откроются в новом окне.Я уже сделал окно конфигурации.
Мне нужно переключаться между 2 режимами, нажимая Key F12
или что-то в этом роде .... также я должен запрашивать пароль у пользователя при переключении из режима выполнения в режим конфигурации(Только один раз за сеанс) я сделал экран пароля и внедрил его в конфигурацию.
Я также обеспокоен тем, что использовал Messenger (шаблон Meaditor), поэтому закрытие и открытие 2 разных окон снова зарегистрирует делегатов, и снова ... и я запускаю Modal windows
.
Также нужно ли поддерживать оба вида живыми, или я могу убить одного из них при переключении.
Полностью смущен реализацией ...
Мой App.Xaml Code
/// <summary>
/// Application_Startup
/// </summary>
/// <param name = "sender"></param>
/// <param name = "e"></param>
private void Application_Startup(object sender, StartupEventArgs e)
{
log.Debug("Application_Startup " + Utility.FUNCTION_ENTERED_LOG);
try
{
if (e.Args.Length == 0)
{
AboutDialog.SpashScreen(Utility.TOOL_NAME,
Utility.TOOL_VERSION);
MainView mainForm = new MainView();
mainForm.ShowDialog();
}
else
{
string key = null;
foreach (string arg in e.Args)
{
if (arg.StartsWith("-"))
{
//this is a key
key = arg;
if (key.Equals("-config"))
{
CommandLineArgs.Add(key, "config");
break;
}
if (key.Equals("-start"))
{
CommandLineArgs.Add(key, "start");
}
}
else
{
//should be a value
if (key == null)
{
throw new Exception(
"The command line arguments are malformed.");
}
CommandLineArgs.Add(key, arg);
key = null;
}
}
string config = string.Empty;
foreach (object k in App.CommandLineArgs.Keys)
{
config += CommandLineArgs[k].ToString();
}
switch (config)
{
case "config":
AboutDialog.SpashScreen(
Utility.TOOL_NAME,
Utility.TOOL_VERSION);
MainView mainForm = new MainView();
mainForm.ShowDialog();
break;
case "start" :
ExecutionForm execuForm= new ExecutionForm();
execuForm.ShowDialog();
break;
default:
MessageBox.Show("Incorrect Parameters",
Utility.TOOL_NAME);
Application.Current.Shutdown();
break;
}
}
log.Debug("Application_Startup" + Utility.FUNCTION_EXIT_LOG);
}
catch (Exception ex)
{
log.Error("Application_Startup" + ex.Message, ex);
}
}