System.WindowsUIElement.ManipulationStarted 事件
当输入设备对 UIElement 对象开始操作时发生。
ManipulationStarted 事件在 ManipulationStarting 事件之后发生。 使用 ManipulationStartedEventArgs,您可以执行以下操作。
使用 ManipulationContainer 属性获取操作位置所相对的元素。
使用 ManipulationOrigin 属性获取操作的原点。
通过调用 Complete 方法来取消该操作。
小例子:点击界面,触发事件 随机生成hello world
<!--LayoutRoot contains the root grid where all other page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions><!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="UIElement对象操作开始触发事件" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="main page" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel><!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Name="txtblk" Text="" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Grid> </Grid>事件处理
//在 ManipulationStarted 事件发生时调用,当输入设备对 UIElement 对象开始操作时发生。
protected override void OnManipulationStarted(ManipulationStartedEventArgs args) { TextBlock newTextBlock = new TextBlock(); newTextBlock.Text = "Hello, world!"; newTextBlock.HorizontalAlignment = HorizontalAlignment.Left;//父元素水平最左边 newTextBlock.VerticalAlignment = VerticalAlignment.Top;//父元素垂直最左边 newTextBlock.Margin = new Thickness( (ContentPanel.ActualWidth - txtblk.ActualWidth) * rand.NextDouble(), (ContentPanel.ActualHeight - txtblk.ActualHeight) * rand.NextDouble(), 0, 0); //Thickness 结构四个 Double 值分别描述矩形的四个边(Left、Top、Right 和 Bottom)。 ContentPanel.Children.Add(newTextBlock);args.Complete();//完成操作
args.Handled = true;//获取或设置将路由事件标记为已处理的值。设置为 true,则可以防止事件路由路径上的大多数处理程序再次处理同一事件。 base.OnManipulationStarted(args);//务必调用基本类的 OnManipulationStarted 方法,从而基本类接收该事件 }