Buttons in Listview - Von welchem item wurde das Event gefeuert?

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Buttons in Listview - Von welchem item wurde das Event gefeuert?

    Hallo,
    ich habe einen Listview, wo in einer Spalte Buttons sind. Wie ich das Event "abonniere" weiß ich, aber wie finde ich heraus, von welchem Item das kommt?

    Hier mein XAML Code:

    XML-Quellcode

    1. <Grid>
    2. <ListView x:Name="lst" Margin="10,10,10,24">
    3. <ListView.View>
    4. <GridView>
    5. <GridViewColumn >
    6. <GridViewColumn.CellTemplate >
    7. <DataTemplate >
    8. <StackPanel Orientation="Horizontal" >
    9. <Button Width="200" Height="30" Content="Aktionen" IsEnabled="True" Click="ColumClick" ></Button>
    10. </StackPanel>
    11. </DataTemplate>
    12. </GridViewColumn.CellTemplate>
    13. </GridViewColumn>
    14. </GridView>
    15. </ListView.View>
    16. </ListView>
    17. </Grid>


    Und mein VB Code:

    VB.NET-Quellcode

    1. Class MainWindow
    2. Private Sub ColumClick(sender As Object, e As RoutedEventArgs)
    3. End Sub
    4. Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    5. lst.Items.Add(New Itm("Hallo Welt"))
    6. End Sub
    7. End Class
    8. Public Class Itm
    9. Private _txt As String
    10. Public Property Text As String
    11. Get
    12. Return _txt
    13. End Get
    14. Set(value As String)
    15. _txt = value
    16. End Set
    17. End Property
    18. Public Sub New(txt As String)
    19. _txt = txt
    20. End Sub
    21. End Class



    Danke für eure Antworten.
    Mfg
    Vincent

    Zum einen haben die Events immer einen sender als Parameter. Diesen in Button casten und du weißt woher das Event kommt. Zum solltest du hier unter keinen Umständen Events verwenden.

    WPF = Gut.
    WPF + MVVM = Gut³.

    Nimm MVVM und verwende den CommandParameter. Diesen einfach auf {Binding RelativeSource={x:Static RelativeSource.Self}}


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    @ErfinderDesRades
    Sorry, ich verstehe nur Bahnhof...

    @thefiloe
    Jap, das mit dem casten habe ich auch überlegt, aber wie kann ich dann den Button einem Item zuordnen? Zu den Events: Wo soll ich dann meinen VB Code hinschreiben? In das XAML Codefeld?! Oder was meinst du?


    Ich werd in den Sommerferien auf jeden fall EDRs Buch lesen und aus der Nachfolgeversion den XAML Teil. Vorerst werde ich erstmal den Namen des Items an den Tag des Buttons binden und dann im Event abfragen. Wenn ich meinen Code nicht verstehe hat das ja auch nicht viel Sinn... (oder ich lese einfach nur das Kapitel über CommandParameter aus dem Buch, muss mal gucken.)
    Mfg
    Vincent

    VincentTB schrieb:

    Sorry, ich verstehe nur Bahnhof...
    Wie - Bahnhof verstehen?

    Es ist total identisch zu deiner ListView.
    Wo bei dir Listbox ist, ist beim TicTacToe ein ItemsControl (die basisklasse von ListView).
    Und ebenso wie du habe ich da Buttons hineintemplatet.
    Nur meinen Button habe ich das Command und den CommandParameter gebindet, wo du einen Click-Handler bemühst.

    Mein Code im MainModel ist ca. 20 Zeilen, da wirste schon rausfinden, wo der Button dran gebunden ist.
    Ausserdem kannste das Binding ja im PropertyFenster nachgucken - dassis ja mit BindingPicking gemacht.
    Damit sollte die Frage: Von welchem Item wurde der Command gefeuert? beantwortbar sein.