#c# #wpf #xaml
#c# #wpf #xaml
Вопрос:
Итак, у меня есть страница (Homepage.xaml), когда я нажимаю кнопку на этой странице, она открывает приглашение (Prompt.xaml).
Это приглашение — просто окно, которое я создал и выполнил с помощью window.ShowDialog();
метода в Homepage.cs. Я смог добавить немного кода, и при нажатии кнопки «НЕТ» окно запроса закрывается, теперь я нахожу проблему с кнопкой «ДА».
Я хочу, чтобы кнопка «ДА» возвращала меня к MainWindow
, чего я пока смог добиться, но когда она открывает предыдущую домашнюю страницу.xaml все еще там, и я не знаю, как закрыть страницу из окна запроса, если это вообще возможно?
Другое дело, что когда MainWindow
открывается, это вроде как всплывает, могу ли я сделать так, чтобы оно просто попадало на страницу, а не открывалось / выскакивало как новая программа? Вот код.
Homepage.cs
public partial class User_Homepage : Page
{
public static Page pager { get; set; }
public User_Homepage()
{
InitializeComponent();
}
public void UserLogoutBtn_Click(object sender, RoutedEventArgs e)
{
var lovmsgb = new Custom_MessageBoxes.LogoutVerification();
lovmsgb.ShowDialog();
}
}
Prompt.cs
public partial class LogoutVerification : Window
{
public LogoutVerification()
{
InitializeComponent();
}
private void YesLogoutBtn_Click(object sender, RoutedEventArgs e)
{
this.Close();
MainWindow window = new MainWindow() { WindowStartupLocation = WindowStartupLocation.CenterScreen};
window.Show();
}
private void NoLogoutBtn_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
И MainWindow.cs на всякий случай
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void BtnClickP1(object sender, RoutedEventArgs e)
{
mainFrame.Content = new Page1();
}
private void AdminBtn_Click(object sender, RoutedEventArgs e)
{
mainFrame.Content = new Page3();
}
}
Ответ №1:
Чтобы проверить, какая кнопка была нажата, вы должны назначить DialogResult
в своем диалоговом окне:
private void YesLogoutBtn_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
this.Close();
}
private void NoLogoutBtn_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
this.Close();
}
Теперь создайте метод для вызова диалога в вашем MainWindow и передайте его в качестве аргумента на страницу 1:
private void AskDialog()
{
Dialog dialog = new Dialog();
if (dialog.ShowDialog() == true)
{
mainFrame.Content = null;
}
else
{
// False action
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
frame.Content = new Page1(AskDialog);
}
На странице 1 просто вызовите это действие после нажатия кнопки:
public User_Homepage(Action askDialog)
{
InitializeComponent();
AskDialog = askDialog;
}
private readonly Action AskDialog;
private void UserLogoutBtn_Click(object sender, RoutedEventArgs e)
{
AskDialog();
}
Комментарии:
1. Хорошо, теперь как мне закрыть страницу 1, когда откроется окно?
2. Вы проверили мой пример? мэйнФрейм. Content = null; — это должно очистить ваш элемент управления, поэтому страница не будет присутствовать.
3. О, это немного поздно, но страница, на которой выполняется выход, не является страницей 1, страница 1 — это 2-я страница, т. е. mainwindow — > страница 1 — > окно выхода, так как мне перейти из окна выхода прямо в mainwindow?
4. Может быть, вам следует предоставить больше кода? Вызывая действие AskDialog, вы можете вызвать диалоговое окно из mainwindow, независимо от того, какая страница его вызывает.
5. Какую директиву using использует тип «Dialog»?