WPF-Schaltfläche Click-Ereignis funktioniert nicht
Habe ich eine Schaltfläche, die enthält ein Bild in einem raster, mein problem ist, dass ich nicht die Taste Click
Veranstaltung.
Meiner XAML-code:
....
<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>
....
Wie Sie sehen können habe ich zwei Ereignisse, die PreviewMouseLeftButtonDown
Ereignis, und Klicken Sie Ereignis, das ich verwendet PreviewMouseLeftButtonDown
durch eine Lösung sah ich in einer stackoverflow-Frage, aber es hat nicht funktioniert. Beide Veranstaltungen Methoden zeigen eine 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");
}
Wenn jemand auf dieses problem vor bitte helfen Sie mir es zu lösen, suchte ich nach einer Lösung ohne Erfolg. Vielen Dank im Voraus.
Edit: Auch wenn ich einen normalen button: Kein Bild, es funktioniert nicht.
Lösung : Tatsächlich, ich habe die Option IsHitTestVisible
des TabControl
zu false
und deaktiviert alle Click
Veranstaltungen... sorry everybody.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entfernen Sie alle Ereignis-Abonnement von XAML und stellen Sie es im code-behind mit kompakter syntax (nur eine einzige Zeile code) wie unten gezeigt:
Auch, ENTFERNEN Ihre event-handling proc:
Zusätzlich zu diesem, ein weiterer event-handler für die gleiche Taste (
PreviewMouseLeftButtonDown="ImageButtonLeftMouseButtonDown"
im XAML) scheint überflüssig – können Sie es entfernen, mit entsprechenden event-handling proc.So, das code-snippet sollte wie folgt Aussehen:
Relevant, um Ihren Fall (
Button
Kontrolle inListView
Vorlage), finden Sie in diesem Artikel: WPF ListView mit den Tasten auf jeder LinieIhre Click-Ereignis benannt ist
Test_OnClick
im codebehind aber in der XAML-Sie bezeichnen es alsClick="ImageButtonClicked"
so wird das Ereignis nicht Feuer. Es mussClick="Test_OnClick"
versuchen Sie, Tippen Sie auf ein Ereignis, ohne mit click-Ereignis.Gleiche Funktion in beiden Veranstaltungen,