有几种方法。一种方法是设置文本块的x:Name
属性,并使用以下FindName
方法检索它们:
<Canvas Height="175" Width="360" Background="{StaticResource PhoneAccentBrush}" toolkit:TiltEffect.IsTiltEnabled="True" Name="canvasNote" Tap="canvasNote_Tap">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu IsZoomEnabled="False">
<toolkit:MenuItem Header="Open" Click="hubTileOpen_Click"/>
<toolkit:MenuItem Header="Edit" Click="hubTileEdit_Click"/>
<toolkit:MenuItem Header="Delete" Click="hubTileDelete_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock x:Name="Title" Text="{Binding Title}" Margin="12,4,0,0" FontWeight="Bold" FontSize="20" Foreground="White"/>
<TextBlock x:Name="Details" Text="{Binding Details}" Margin="12,28,0,0" TextWrapping="Wrap" Width="352" FontSize="20" Foreground="White"/>
</Canvas>
然后在Tap
事件中:
private void canvasNote_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var canvas = (Canvas)sender;
var title = (TextBlock)canvas.FindName("Title");
System.Diagnostics.Debug.WriteLine(title.Text);
}
但由于您使用n 个画布而不使用数据模板,您可能会遇到名称冲突。因此,另一种方法是改用该Tag
属性:
<Canvas Height="175" Width="360" Background="{StaticResource PhoneAccentBrush}" toolkit:TiltEffect.IsTiltEnabled="True" Name="canvasNote" Tap="canvasNote_Tap">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu IsZoomEnabled="False">
<toolkit:MenuItem Header="Open" Click="hubTileOpen_Click"/>
<toolkit:MenuItem Header="Edit" Click="hubTileEdit_Click"/>
<toolkit:MenuItem Header="Delete" Click="hubTileDelete_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock Tag="Title" Text="{Binding Title}" Margin="12,4,0,0" FontWeight="Bold" FontSize="20" Foreground="White"/>
<TextBlock Tag="Details" Text="{Binding Details}" Margin="12,28,0,0" TextWrapping="Wrap" Width="352" FontSize="20" Foreground="White"/>
</Canvas>
在Tap
事件中:
private void canvasNote_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var canvas = (Canvas)sender;
var title = canvas.Children.OfType<TextBlock>().First(t => (t.Tag as string) == "Title");
System.Diagnostics.Debug.WriteLine(title.Text);
}