点击一个矩形的事件,其上面有文字和图像

时间:2012-02-19 23:44:04

标签: xaml windows-phone-7.1 windows-phone-7

我正在尝试创建一个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事件处理程序。问题是,如果我只将它分配给矩形,那么如果用户点击文本或图像则它不起作用。我想做一些事情,使文本和图像出现在矩形的顶部,加上整个矩形是可点击的,即它响应了点击事件!

寻找一种解决方案,不涉及将相同的点击事件分配给Textblock和Image

3 个答案:

答案 0 :(得分: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!");
}

答案 1 :(得分:2)

将所有这些元素放入GridStackPanel并使用该容器上的事件。它们可以包含多个控件作为子项,并且当它没有被矩形/文本块/图像捕获时将接受该事件。

答案 2 :(得分:1)

将所有这些内容放入按钮并使用按钮事件:

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