Popup y Togglebutton interacción en wpf

Tengo un control que contiene un Togglebutton y una ventana emergente. Cuando se hace clic en ToggleButton, aparece la ventana emergente. Cuando el ToggleButton está desmarcado, la ventana emergente debería cerrarse. Además, al hacer clic fuera de la ventana emergente, se cerrará y el Togglebutton se desmarcará.

He configurado esto configurando la propiedad StaysOpen de la ventana emergente en falso, y configurando la propiedad IsChecked del botón de alternancia para que esté unida en dos direcciones a la propiedad IsOpen de la ventana emergente.

Todo está bien, excepto un caso: con el botón marcado y la ventana emergente abierta, al hacer clic en el botón no se cierra la ventana emergente o el botón vuelve a estar desmarcado.

Creo que esto debe ser porque al hacer clic en el botón, la lógica StaysOpen de Popup establece la propiedad IsOpen de Popup en false. A su vez, esto establece el Togglebutton en desmarcado. Esto debe suceder antes de que se procese mi clic en el botón, por lo que el clic vuelve a comprobar el botón, es decir, una condición de carrera.

Alguna idea de cómo puedo obtener el comportamiento que quiero?

Respuestas a la pregunta(3)

Su respuesta a la pregunta