Beispiel #1
0
        public void RemoveAdorner(IAdorner adorner)
        {
            var popup = PopupsDictionary[adorner];

            popup.IsOpen = false;
            PopupsDictionary.Remove(adorner);
        }
Beispiel #2
0
        public void AddAdorner(IAdorner adorner)
        {
            var popup = new Popup();

            var surfaceVisual = Window.Current.Content.TransformToVisual(this);
            var point         = surfaceVisual.TransformPoint(new FoundationPoint(0, 0));

            var coreInstance = adorner.GetCoreInstance();

            adorner.PropertyChanged += (sender, args) =>
            {
                // I don't like how this is implemented. Refactor!
                if (args.PropertyName.Equals("Left"))
                {
                    popup.HorizontalOffset = adorner.Left - point.X;
                }
                if (args.PropertyName.Equals("Top"))
                {
                    popup.VerticalOffset = adorner.Top - point.Y;
                }
            };

            var uiElementAdapter = (FrameworkElementAdapter)coreInstance;

            popup.Child = (UIElement)uiElementAdapter.GetCoreInstance();

            popup.HorizontalOffset = adorner.Left - point.X;
            popup.VerticalOffset   = adorner.Top - point.Y;
            popup.IsOpen           = true;

            PopupsDictionary.Add(adorner, popup);
        }