我正在尝试创建一个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
答案 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)
将所有这些元素放入Grid
或StackPanel
并使用该容器上的事件。它们可以包含多个控件作为子项,并且当它没有被矩形/文本块/图像捕获时将接受该事件。
答案 2 :(得分:1)
将所有这些内容放入按钮并使用按钮事件:
<Button>
<Grid>
<Rectangle ... />
<TextBlock ... />
<Image ... />
</Grid>
</Button>