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 方法,從而基本類接收該事件
}