private static void OnStaysOpenChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
var popup = dependencyObject as Windows.Popup;
var popupWatcher = (PopupWatcher)null;
var staysOpen = (bool)e.NewValue;
popupWatcherCache.TryGetValue(popup, out popupWatcher);
if (staysOpen)
{
if (popupWatcher != null)
{
popupWatcher.Detach();
popupWatcherCache.Remove(popup);
}
}
else
{
if (popupWatcher == null)
{
popupWatcher = new PopupWatcher(popup);
popupWatcherCache[popup] = popupWatcher;
}
popupWatcher.Attach();
}
}