示例#1
0
        public void Dock(MediaDisplay md)
        {
            Console.WriteLine("Media attached to ArticleDisplay");

            // L'encapsulation qui suit est une astuce
            // pour permettre au Dispatcher de "voir",
            // dans certains cas tordus, que le curseur
            // de la souris n'est plus sur le même contrôle;
            // ce faisait, il génère les évènement MouseLeave
            // et MouseEnter appropriés.
            Task.Run(() =>
            {
                Thread.Sleep(20);
                Dispatcher.Invoke(() =>
                {
                    try
                    {
                        imageContainer.Children.Add(md);
                        imageContainer.MouseLeftButtonUp += ImageContainer_MouseLeftButtonUp;
                    }
                    catch
                    {
                    }
                });
            });
        }
示例#2
0
 public void Undock(MediaDisplay md)
 {
     imageContainer.MouseLeftButtonUp -= ImageContainer_MouseLeftButtonUp;
     imageContainer.Children.Remove(md);
     md.Tag = this;
     Console.WriteLine("Media detached from ArticleDisplay");
 }
示例#3
0
        private void MediaGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            MediaDisplay md     = dockedMedia;
            ICanDock     target = md.Tag as ICanDock;

            Undock(md);
            target.Dock(md);
        }
示例#4
0
        public void Undock(MediaDisplay md)
        {
            if (dockedMedia != md)
            {
                throw new Exception();
            }

            dockedMedia = null;
            mediaDock.Children.Remove(md);
            mediaGrid.Visibility = Visibility.Hidden;
            OnUnfrozen(CauseOfFreezing.ZoomOnMedia); // restart stopwatch
            Console.WriteLine("Media detached from Page");
        }
示例#5
0
        public void Dock(MediaDisplay md)
        {
            if (dockedMedia != null)
            {
                throw new Exception();
            }

            OnFrozen(CauseOfFreezing.ZoomOnMedia); // disable stop watch
            dockedMedia = md;

            if (string.IsNullOrEmpty(md.Caption))
            {
                mediaTitle.Visibility = Visibility.Hidden;
            }
            else
            {
                mediaTitle.Visibility = Visibility.Visible;
                mediaTitle.Text       = md.Caption;
            }

            mediaGrid.Visibility = Visibility.Visible;
            Console.WriteLine("Media attached to Page");

            // L'encapsulation qui suit est une astuce
            // pour permettre au Dispatcher de "voir",
            // dans certains cas tordus, que le curseur
            // de la souris n'est plus sur le même contrôle;
            // ce faisait, il génère les évènement MouseLeave
            // et MouseEnter appropriés.
            Task.Run(() =>
            {
                Thread.Sleep(20);
                Dispatcher.Invoke(() =>
                {
                    try
                    {
                        mediaDock.Children.Add(md);
                    }
                    catch
                    {
                    }
                });
            });
        }