У меня есть два открытых окна.Я пытаюсь быть в состоянии нажать кнопку в одном окне, и это должно закрыть это же окно.Я хочу сделать это с помощью команд кнопки и параметра команды.Метод execute переключает параметры команды, чтобы определить, какая кнопка нажата, и должен соответствующим образом выполнить заданную задачу следующим образом:
public void Execute(object parameter)
{
LoginPage loginPage = new LoginPage();
CreateAccountPage createAccountPage = new CreateAccountPage();
DepositPage depositPage = new DepositPage();
WithdrawPage withdrawPage = new WithdrawPage();
switch (parameter)
{
case "LoginPageButton":
if (viewModel.IsLoggedIn == false)
loginPage.Show();
else if (viewModel.IsLoggedIn == true)
loginPage.Close();
break;
case "CreateAccountPageButton":
createAccountPage.Show();
break;
case "DepositPageButton":
depositPage.Show();
break;
case "WithdrawPageButton":
withdrawPage.Show();
break;
case "ClearOrderButton":
//code here
break;
case "LogoutButton":
//code here
break;
case "FinishLoginButton": // this is where the issue is
loginPage.Close();//this does not close the loginPage window
break;
}
}
Нет ошибок сборки, и команда выполнит другие задачи, такие как открытие других окон ии т. д., но не закрою окно, поэтому я знаю, что код достигнут, окно просто не закроется, и после нескольких дней исследований я не смог найти ответ.Я могу выполнить желаемую задачу одним нажатием кнопки, например:
private void FinishLogin_Click(object sender, RoutedEventArgs e)
{
if ((viewModel.usernameList.Contains(UsernameTextBox.Text) &&
viewModel.passwordList.Contains(PasswordTextBox.Text)) &&
(viewModel.usernameList.IndexOf(UsernameTextBox.Text) ==
(viewModel.passwordList.IndexOf(PasswordTextBox.Text))))
{
viewModel.IsLoggedIn = true;
this.Close();
}
}
вместе с будущими задачами, которые мне нужно выполнить, но я не хочу использовать нажатие кнопки, и мне потребуется inotifypropertychangedв будущем мне нужна команда.Это код кнопки, которую нужно нажать, чтобы закрыть окно:
<Button Content="Finish Login" Grid.Column="1" Grid.Row="2" FontWeight="Bold" Margin="130 10 30 10" Background="Firebrick" Command="{Binding ButtonCommands}" CommandParameter="FinishLoginButton"/>
Я знаю, что большая часть этого кода не будет следовать за MVVM, но я просто хочу, чтобы этот код работал намомент.