当前位置: 首页>>代码示例>>C#>>正文


C# ScatterViewItem.CaptureTouch方法代码示例

本文整理汇总了C#中ScatterViewItem.CaptureTouch方法的典型用法代码示例。如果您正苦于以下问题:C# ScatterViewItem.CaptureTouch方法的具体用法?C# ScatterViewItem.CaptureTouch怎么用?C# ScatterViewItem.CaptureTouch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ScatterViewItem的用法示例。


在下文中一共展示了ScatterViewItem.CaptureTouch方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ItemProxy_PreviewTouchDown

        /// <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);
        }
开发者ID:thuyhk,项目名称:SocialStream,代码行数:78,代码来源:River.xaml.cs


注:本文中的ScatterViewItem.CaptureTouch方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。