На одной из страниц в моем приложении я должен показать всплывающее окно после того, как я покажу его, если пользователь нажмет кнопку «Назад», не удаляя всплывающее окно, тогда я должен сначала обработать это поле (может быть, удаление), а в следующем нажатии «Назад» я хочу перейти на предыдущую страницу. Это похоже на то, когда клавиатура открыта, первое нажатие назад свернет ее, а при втором нажатии страница перейдет на предыдущую страницу. Как я могу это сделать?

Я попытался обработать событие BackPressed на уровне страницы, но это не сработало. Код здесь

        private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        Frame frame = Window.Current.Content as Frame;

        if(isOPen)
        {
            isOPen=false;
            Storyboard2.Begin();
            parda.Visibility = Visibility.Collapsed;
            e.Handled = true;
        }
        else
        {
            frame.GoBack();
            e.Handled = true;
        }
    }

IsOPen сохранить всплывающее окно состояния погоды в настоящее время открыто или нет.

Обновление:

Вот что я сделал. Как обычно, сначала приземлившись на главной странице, а затем перейдя на вторую страницу, на второй странице мне нужно открыть сетку с текстовыми полями для видимости всплывающих окон.

Код прост:

        private void togglr_Checked(object sender, RoutedEventArgs e)
    {
        isOPen = true;
        parda.Visibility = Visibility.Visible;
        Storyboard1.Begin();
    }

    private void togglr_Unchecked(object sender, RoutedEventArgs e)
    {
        isOPen = flase;
        parda.Visibility = Visibility.Collapsed;
        Storyboard2.Begin();
    }

Это оно.

0
Janak 12 Авг 2015 в 17:36

2 ответа

В условии if я не вижу установки isOpen на false

Таким образом, если вы никогда не попадете в блок else

1
Dimitris Batsougiannis 12 Авг 2015 в 18:14
Попробуйте поставить e.Handled = true; вверху каждого блока
 – 
Dimitris Batsougiannis
12 Авг 2015 в 18:34
Все еще не работает. Он выполняется, если блок, но также страница переходит назад, и в isOPen == false он работает нормально.
 – 
Janak
12 Авг 2015 в 18:48
Опубликованный код выглядит нормально, возможно, проблема в другой части вашего кода, покажите нам больше!
 – 
Dimitris Batsougiannis
12 Авг 2015 в 19:31
Какой-то другой класс может быть подписан на HardwareButtons_BackPressed, который, в свою очередь, может выполнять команду возврата, всегда лучше отписываться от таких событий.
 – 
Milan Aggarwal
14 Авг 2015 в 11:09

Я пишу логику метода OnNavigatingFrom (путем переопределения), как это

        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        if(isOPen)
        {
            e.Cancel = true;
            Storyboard2.Begin();
            parda.Visibility = Visibility.Collapsed;
        }
    }

И теперь работает нормально.

0
Janak 13 Авг 2015 в 06:24