Ich habe ein Raster, und ich möchte onclick Ereignis hinzufügen.Auf klicken Ereignis in GridView
<ListView
HorizontalAlignment="Stretch"
Margin="10"
x:Name="BooksListView"
GridViewColumnHeader.Click="SortBooks"
>
<ListView.View>
<GridView></GridView>
</ListView.View>
</ListView>
ich die akzeptierte Antwort von dieser SO question versucht haben, aber item.IsSelected
ist immer falsch.
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
</Style>
</ListView.ItemContainerStyle>
C# -Code:
private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var item = sender as ListViewItem;
if (item != null && item.IsSelected) // IsSelected is always false
...
}
Sollte ich diese Prüfung nur entfernen, oder gibt es einen besseren Weg, es zu tun?
Sie können diese Überprüfung entfernen, wenn es für Ihre Geschäftslogik nicht kritisch ist. –
Sie können die item.IsSelected auf "true" setzen, wenn Sie dies benötigen, aber ich vermute, dass die Eigenschaft unmittelbar nach dem Ende der Event-Handler-Methode gesetzt wird. Ich würde definitiv empfehlen, das MouseLeftButtonDown-, MouseDown- oder MouseLeftButtonUp-Ereignis und nicht das Vorschau-Ereignis zu verwenden. Durch Auswählen des Elements wird das Ereignis ausgelöst und der Handler ausgeführt, sodass Sie sicher sein können, dass IsSelected wahr ist. Einfach diesen Check loswerden oder ein Preview Event verwenden. Ich neige dazu, das MouseUp-Ereignis zu verwenden, um die Maus aus dem Objekt zu ziehen und loszulassen, wenn es versehentlich ausgewählt wurde. – SimperT
@Matt Hat die Antwort für dich funktioniert? –