得到画布之子

时间:2015-09-08 04:36:39

标签: c# wpf canvas windows-store-apps windows-store

我操纵Canvas delta,画布有两个孩子(RectangleThumb)。我希望我的操作增量仅在我点击Rectangle时才有效。有没有办法让我点击哪个Canvas孩子。

void rec_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    var recSender = (Canvas)sender; // Get the Rectangle
    var rec=recSender.Children[1] as Rectangle;

    //if (e.OriginalSource is Rectangle)
    {            
        TranslateTransform ttSender = recSender.RenderTransform as TranslateTransform; // Get the Rectangle's RenderTransform (which is a TranslateTransform)

        ttSender.X += e.Delta.Translation.X;
        ttSender.Y += e.Delta.Translation.Y;
    }
}

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你的问题。我认为你必须设置属性

 ManipulationMode="All"

子元素能够使用e.OriginalSource访问它们。这将使事件泡沫化。

在我的代码中,它看起来像这样:

XAML

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Canvas ManipulationMode="All"  ManipulationDelta="Canvas_ManipulationDelta" >
            <Rectangle ManipulationMode="All" Fill="Red" Width="100" Height="411"></Rectangle>
            <Ellipse ManipulationMode="All" Fill="Green" Width="400" Height="130"></Ellipse>
        </Canvas>
    </Grid>

CS:

 private void Canvas_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            var x = e.OriginalSource;    
        }

现在当我点击椭圆时,我得到: Original Source breakpoint

所以我可以访问该对象。在我的机器上运行Windows 10,VS2015。