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 { } }); }); }
public void Undock(MediaDisplay md) { imageContainer.MouseLeftButtonUp -= ImageContainer_MouseLeftButtonUp; imageContainer.Children.Remove(md); md.Tag = this; Console.WriteLine("Media detached from ArticleDisplay"); }
private void MediaGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { MediaDisplay md = dockedMedia; ICanDock target = md.Tag as ICanDock; Undock(md); target.Dock(md); }
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"); }
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 { } }); }); }