Нужно закрыть страницу из окна - PullRequest
0 голосов
/ 02 апреля 2019

Итак, у меня есть страница (Homepage.xaml), когда я нажимаю кнопку на этой странице, она открывает приглашение (Prompt.xaml).

Prompt

Это приглашение - просто окно, которое я создал и выполнил с помощью метода window.ShowDialog(); в Homepage.cs. Я смог добавить небольшой код, и когда нажата кнопка «НЕТ», окно приглашения закрывается, и теперь я нахожу проблему с кнопкой «ДА».

Я хочу, чтобы кнопка «ДА» вернула меня к MainWindow, чего я смог достичь до сих пор, но когда он открывает предыдущую Homepage.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 Ответ

0 голосов
/ 02 апреля 2019

Чтобы проверить, какая кнопка была нажата, вы должны назначить DialogResult в вашем DialogWindow:

    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 и передайте его в качестве аргумента Page1:

    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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...