Как обнаружить всплывающее окно LostFocus, если щелкнуть только за пределами всплывающего окна и не сделать его скрытым - PullRequest
0 голосов
/ 02 мая 2019

У меня есть пользовательский элемент управления UWP, в котором я использую всплывающее окно, и как я могу обнаружить потерянный фокус всплывающего окна?

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

Теперь мне нужно закрыть всплывающее окно при нажатии за пределами всплывающего окна.Я провел исследование и нашел свойство IsLightDismissEnabled , которое автоматически закрывает всплывающее окно и вызывает LostFocus.Но при переключении между вкладками всплывающее окно не должно закрываться, но когда я использую это свойство, автоматически закрывается всплывающее окно, что мне не нужно.

Это код, который у меня есть В коде, который я обновляю на основе состоянияо том, открыто ли уже всплывающее окно и выбрана ли новая вкладка.И в свойстве State я обновляю видимость всплывающего окна

if (this.PART_Popup != null)
      {
           this.PART_Popup.LostFocus += this.PART_Popup_LostFocus;
           this.PART_Popup.IsLightDismissEnabled = true;
       }


private void PART_Popup_LostFocus(object sender, RoutedEventArgs e)
   {

        if (this.ParentItemsControl != null)
            {
                if (this.ParentItemsControl.State == State.Adorner)
                {
                    if (this.ParentItemsControl.PART_Popup.IsOpen && this.ParentItemsControl.SelectedItem == this)
                    {
                        this.ParentItemsControl.State = State.Hide;
                    }
                }
          else
                {
                    this.ParentItemsControl.State = State.Normal;
                }
            }
        }

Есть ли способ вызвать только LostFocus, и я могу иметь свой код, чтобы закрыть всплывающее окно или оставить его открытым (при переключении вкладок) ??Я также обнаружил, что при включении упомянутого свойства некоторые события двойного нажатия не работали, и я не знаю почему.Так что любая помощь приветствуется.

1 Ответ

0 голосов
/ 02 мая 2019

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

Я думаю, что вместо того, чтобы пытаться обрабатывать событие LostFocus, вы должны вместо этого попробовать события Opened и Closed и использовать свойство записи IsOpen, чтобы вручную открыть и закрыть Popup.

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...