private void Add(ScatterViewItem element) { DocumentContainer.SetDockState(element, DockStates.Floating); element.AddHandler(UIElement.ManipulationCompletedEvent, new EventHandler<ManipulationCompletedEventArgs>(element_ManipulationDelta), true); element.PreviewTouchMove += new EventHandler<TouchEventArgs>(element_PreviewTouchMove); ((ScatterViewItem)element).Template = (ControlTemplate)element.FindResource("Floating"); element.Orientation = 0; element.CanRotate = false; this.view.Items.Add(element); }
/// <summary> /// Handles the PreviewContactDown event of the ItemProxy control. /// If a ItemProxy can't move, block the contact so that a manipulation doesn't begin. Otherwise, create an SVI from the proxy. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.Input.TouchEventArgs"/> instance containing the event data.</param> private void ItemProxy_PreviewTouchDown(object sender, TouchEventArgs e) { ItemProxy proxy = sender as ItemProxy; RiverItemState state = GetState(proxy); if (!proxy.CanMove || state.IsAnimatingToContactOrientation || state.IsAnimatingToRemovedSize || state.IsAnimatingBackToRiver) { e.Handled = true; return; } if ((e.OriginalSource as FrameworkElement).FindVisualParent<Button>() != null) { // Ignore if an admin button is pressed. return; } // Create the SVI and set its position and orientation. ScatterViewItem svi = new ScatterViewItem(); _scatterView.Items.Add(svi); state.Svi = svi; svi.Style = state.ItemStyle; svi.MinHeight = proxy.MinHeight; svi.MinWidth = proxy.MinWidth; svi.Center = proxy.Center; svi.Orientation = proxy.Orientation; svi.CanScale = false; svi.CanRotate = false; // Set the SVI size. bool isPortrait = state.RowSpan > state.ColumnSpan; double itemWidth = state.ColumnSpan * GridCellSize.Width; double itemHeight = state.RowSpan * GridCellSize.Height; itemWidth += Plane.GetPlaneFrontPadding(svi).Left + Plane.GetPlaneFrontPadding(svi).Right; itemHeight += Plane.GetPlaneFrontPadding(svi).Top + Plane.GetPlaneFrontPadding(svi).Bottom; svi.Width = isPortrait ? itemHeight : itemWidth; svi.Height = isPortrait ? itemWidth : itemHeight; // Hook events. svi.ContainerActivated += ScatterViewItem_Activated; svi.ContainerManipulationDelta += ScatterViewItem_ScatterManipulationDelta; svi.ContainerDeactivated += ScatterViewItem_Deactivated; svi.ContainerManipulationCompleted += ScatterViewItem_ScatterManipulationCompleted; TouchChangedEvents.AddAreAnyTouchesCapturedWithinChangedHandler(svi, new RoutedEventHandler(ScatterViewItem_AreAnyTouchesCapturedWithinChanged)); svi.AddHandler(RiverItemBase.FlipRequestedEvent, new RiverItemBase.SourceRoutedEventHandler(ScatterViewItem_FlipRequested)); svi.AddHandler(RiverItemBase.CloseRequestedEvent, new RiverItemBase.SourceRoutedEventHandler(ScatterViewItem_CloseRequested)); svi.Unloaded += (a, b) => { // Unhook events on unload. svi.ContainerActivated -= ScatterViewItem_Activated; svi.ContainerManipulationDelta -= ScatterViewItem_ScatterManipulationDelta; svi.ContainerDeactivated -= ScatterViewItem_Deactivated; svi.ContainerManipulationCompleted -= ScatterViewItem_ScatterManipulationCompleted; TouchChangedEvents.RemoveAreAnyTouchesCapturedWithinChangedHandler(svi, new RoutedEventHandler(ScatterViewItem_AreAnyTouchesCapturedWithinChanged)); svi.RemoveHandler(RiverItemBase.FlipRequestedEvent, new RiverItemBase.SourceRoutedEventHandler(ScatterViewItem_FlipRequested)); svi.RemoveHandler(RiverItemBase.CloseRequestedEvent, new RiverItemBase.SourceRoutedEventHandler(ScatterViewItem_CloseRequested)); }; svi.Loaded += (a, b) => { // Populate with data when loaded. RiverItemBase proxyItem = proxy.FindVisualChild<RiverItemBase>(); RiverItemBase sviItem = svi.FindVisualChild<RiverItemBase>(); sviItem.RenderData(state, proxyItem.DataContext); proxy.Visibility = Visibility.Hidden; }; // Steal the touch from the proxy. svi.UpdateLayout(); svi.CaptureTouch(e.TouchDevice); }
/// <summary> /// Content to be displayed on the holiday homes page /// </summary> /// <returns>A stackpanel with the holiday home content</returns> private StackPanel hHomesContent() { StackPanel contentStackPanel = new StackPanel(); //Create a scatter view for the holiday home pictures scatter = new ScatterView(); scatter.Height = 500; scatter.Background = new SolidColorBrush((Color) ColorConverter.ConvertFromString("#00000000")); //Create a scrollviewer for the details about the homes hhscroll = new SurfaceScrollViewer(); hhscroll.Style = FindResource("SurfaceScrollViewerStyle1") as Style; hhscroll.Height = 300; hhscroll.Background = new SolidColorBrush(Util.contentBgColor); hhscroll.ScrollChanged += hhscroll_ScrollChanged; //Create a prompt to show the user that they can move/zoom the pictures TextBlock prompt = Util.TextBlockFactory(); prompt.TextAlignment = TextAlignment.Center; prompt.Inlines.Add(new Run("Click on the images below to see information or use two fingers to zoom\n")); contentStackPanel.Children.Add(prompt); contentStackPanel.Children.Add(scatter); contentStackPanel.Children.Add(hhscroll); //Don't allow horizontal scrolling hhscroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled; hhscroll.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; //Create new scatterview item for the arrowwtown home arrowtown = new ScatterViewItem(); arrowtown.Content = new PoloroidControl("images/FamilySupport/arrowtown.jpg", "Arrowtown", (Color) ColorConverter.ConvertFromString("#ffffffff")); (arrowtown.Content as PoloroidControl).removeBorder(); arrowtown.Orientation = 0; arrowtown.Height = 200; arrowtown.Width = 300; arrowtown.AddHandler(MouseUpEvent, new MouseButtonEventHandler(arrowtown_MouseUp), true); scatter.Items.Add(arrowtown); //Create new scatterview item for the taupo home taupo = new ScatterViewItem(); taupo.Content = new PoloroidControl("images/FamilySupport/taupo.jpg", "Taupo", (Color) ColorConverter.ConvertFromString("#ffffffff")); (taupo.Content as PoloroidControl).removeBorder(); taupo.Orientation = 0; taupo.Height = 200; taupo.Width = 300; taupo.AddHandler(MouseUpEvent, new MouseButtonEventHandler(taupo_MouseUp), true); scatter.Items.Add(taupo); //Create new scatterview item for the hawkes bay home hawkesbay = new ScatterViewItem(); hawkesbay.Content = new PoloroidControl("images/FamilySupport/hawkesBay.jpg", "Hawkes Bay", (Color) ColorConverter.ConvertFromString("#00ffffff")); (hawkesbay.Content as PoloroidControl).removeBorder(); hawkesbay.Orientation = 0; hawkesbay.Height = 200; hawkesbay.Width = 300; hawkesbay.AddHandler(MouseUpEvent, new MouseButtonEventHandler(hawkesBay_MouseUp), true); scatter.Items.Add(hawkesbay); //set the content to initially be hawkes bay content hawkesBay_MouseUp(null, null); return contentStackPanel; }