У меня есть пользовательский элемент управления 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, и я могу иметь свой код, чтобы закрыть всплывающее окно или оставить его открытым (при переключении вкладок) ??Я также обнаружил, что при включении упомянутого свойства некоторые события двойного нажатия не работали, и я не знаю почему.Так что любая помощь приветствуется.