public void Initialize()
        {
            HorizontalAlignment horizontal = PopupDocker.GetDockHorizontal(this);
            VerticalAlignment   vertical   = PopupDocker.GetDockVertical(this);

            border.BorderThickness = new Thickness(
                (horizontal == HorizontalAlignment.Left || horizontal == HorizontalAlignment.Stretch) ? 0.0 : 5.0,
                (vertical == VerticalAlignment.Top || vertical == VerticalAlignment.Stretch) ? 0.0 : 5.0,
                (horizontal == HorizontalAlignment.Right || horizontal == HorizontalAlignment.Stretch) ? 0.0 : 5.0,
                (vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Stretch) ? 0.0 : 5.0
                );
            border.CornerRadius = new CornerRadius(
                ((vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Right || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0,
                ((vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Left || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0,
                ((vertical == VerticalAlignment.Top || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Left || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0,
                ((vertical == VerticalAlignment.Top || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Right || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0
                );

            var itemsSource = Notifications;

            if (PopupDocker.GetDockVertical(this) == VerticalAlignment.Top)
            {
                itemsSource = new ReversedObservableCollection <GrowlNotification>(Notifications);
            }
            notificationsControl.ItemsSource = itemsSource;
        }
        protected override void BeginOpenAnimation(GrowlNotification notification)
        {
            var openDuration = new Duration(TimeSpan.FromSeconds(0.5));

            if (UseFadeAnimation && Notifications.Count <= 1)
            {
                var animation = new DoubleAnimation(0, 1, openDuration);
                animation.Completed += delegate { EndOpenAnimation(notification); };
                border.BeginAnimation(OpacityProperty, animation);
            }
            else
            {
                var container = GetNotificationElement(notification);
                VerticalAlignment vertical = PopupDocker.GetDockVertical(this);
                if (vertical == VerticalAlignment.Bottom ||
                    vertical == VerticalAlignment.Top)
                {
                    var animation = new DoubleAnimation((vertical == VerticalAlignment.Top ? -1.0 : 1.0) * container.DesiredSize.Height + borderTranslation.Y, 0, new Duration(TimeSpan.FromSeconds(0.5)));
                    animation.Completed += delegate { EndOpenAnimation(notification); };
                    borderTranslation.BeginAnimation(TranslateTransform.YProperty, animation);
                }
            }
        }