【发布时间】:2014-09-26 10:00:22
【问题描述】:
我有一个在网格内包含图像的按钮,我的问题是我无法使按钮 Click 事件起作用。
我的 XAML 代码:
....
<TabControl TabStripPlacement="Left">
<TabItem Loaded="ListProductsLoaded" Width="185" Height="100" Header="Lister les Produits">
<Grid Background="#FFE5E5E5">
<ListView Name="ProductsListView" IsHitTestVisible="False">
<ListView.View>
<GridView>
<GridViewColumn Width="120" Header="Reference" DisplayMemberBinding="{Binding ProductReference}"></GridViewColumn>
<GridViewColumn Width="150" Header="Nom" DisplayMemberBinding="{Binding ProductName}"></GridViewColumn>
<GridViewColumn Width="120" Header="Photo" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button PreviewMouseLeftButtonDown="ImageButtonLeftMouseButtonDown" Name="ImageButton" Width="120" Height="120" Click="ImageButtonClicked">
<Image Width="119" Height="119" Name="ProdImage" Source="{Binding ProductImage}"></Image>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</TabItem>
</TabControl>
....
如您所见,我使用了两个事件,PreviewMouseLeftButtonDown 事件和 Click 事件,我使用了 PreviewMouseLeftButtonDown,因为我在 stackoverflow 问题中看到了一个解决方案,但它不起作用。两种事件方法都显示MessageBox
private void ImageButtonClicked(object sender, RoutedEventArgs e)
{
MessageBox.Show(this, "clicked image button");
}
private void ImageButtonLeftMouseButtonDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("test clicked");
}
如果有人之前遇到过这个问题请帮我解决,我搜索了一个没有成功的解决方案。提前致谢。
编辑:即使我使用普通按钮:里面没有图像,它也不起作用。
解决方案:实际上,我将TabControl 的选项IsHitTestVisible 设置为false 并且禁用了所有Click 事件......对不起大家。
【问题讨论】:
-
我遇到了类似的问题:
Button_Click-Event 没有触发,因为我还有一个包含e.Handled=true的Button_PreviewMouseUp-Event。在我删除它之后,Click-Event 起作用了。