我操纵Canvas
delta,画布有两个孩子(Rectangle
和Thumb
)。我希望我的操作增量仅在我点击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;
}
}
答案 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;
}
所以我可以访问该对象。在我的机器上运行Windows 10,VS2015。