2012-02-19 17 views
1

我想创建一个UI给最终用户的感觉像一个瓷砖。我有三个元素 - 矩形,文本和图像以下列方式:点击事件中的文字和图像在它上面的矩形

<Rectangle Name="systemTime" Height="173" Width="173" Grid.Column="0" Grid.Row="0" Fill="{StaticResource PhoneAccentBrush}" Opacity="0.85" Margin="0,12,12,12" /> 
<TextBlock Text="System Time" Grid.Row="0" Grid.Column="0" FontSize="{StaticResource PhoneFontSizeMediumLarge}" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="12,0,0,15" /> 
<Image Source="images\System time.jpg" Grid.Row="0" Grid.Column="0" Width="150" Height="115" HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="0.9" Margin="-10,0,0,20" /> 

现在我想分配一个Tap事件处理程序的矩形。问题是,如果我只将它分配给矩形,那么如果用户单击文本或图像,它将不起作用。我想做一些事情,让文字和图像出现在矩形的顶部,再加上整个矩形都是可点击的,即它响应了点击事件!

寻找不涉及分配相同的敲击事件的文本块和图像

回答

2

将所有这些元素成GridStackPanel并在该容器上使用该事件。它们可以包含多个控件作为子项,并且在未被矩形/文本块/图像捕获时将采取该事件。

1

将所有这些东西变成按钮,使用按钮事件的解决方案:

<Button> 
    <Grid> 
     <Rectangle ... /> 
     <TextBlock ... /> 
     <Image ... /> 
    </Grid> 
</Button> 
+0

你不能做到这一点!我收到一条错误消息“房产内容设置不止一次” – Saurabh 2012-02-20 15:39:38

+0

对不起,也许它应该更复杂 – notacat 2012-02-20 16:21:18

3

也许这有助于...

XAML:

<Grid Tap="Grid_Tap"> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Rectangle Grid.Column="0" Grid.Row="0" 
      Width="100" Height="100" 
      Fill="Red" /> 
    <TextBlock Grid.Column="0" Grid.Row="0" 
      VerticalAlignment="Bottom" TextAlignment="Left" 
      Text="YourText" /> 
    <Image Grid.Column="0" Grid.Row="0" 
     ImageSource="Images/YourImage.png" /> 
</Grid> 

代码隐藏:

private void Grid_Tap(object sender, GestureEventArgs e) 
{ 
    MessageBox.Show("Hello World!"); 
}