Events eines DataGrids in anderer Klasse empfangen

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Events eines DataGrids in anderer Klasse empfangen

    Hallo zusammen!

    Ich versuche gerade meinen Code aus dem CodeBehind in eine andere Klasse zu verschieben. Soweit ich das MVVM-Konzept verstanden habe, wäre die Klasse dann wohl mein ViewModel?
    Die Befehle der Buttons sind bereits über RelayCommands weitergeleitet.
    Wie ist aber das Vorgehen für die Events? Benötigt werden Events aus dem DataGrid im ViewModel.

    Gruß

    eddi
    Hallo

    eichseinet schrieb:

    Wie ist aber das Vorgehen für die Events? Benötigt werden Events aus dem DataGrid im ViewModel.

    Alles was nicht über Command abgehandelt werden kann sollte (bis auf ein paar Ausnahmen) über z.b. Attached Properties geregelt werden. Das Kapitel zu AP ist in meinem Tutorial (Signatur) bereits enthalten.

    Solltest du noch Fragen haben (spezifischer) dann melde dich hald nochmals.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke schon mal für die Antwort. Leider komme ich nicht besonders weit. Hier erst mal mein Code, an dem Du sicher gleich sehen wirst, dass da einiges an Verständnis für die Materie fehlt. :rolleyes:

    XAML im Usercontrol

    XML-Quellcode

    1. <Grid>
    2. <DataGrid x:Name="Grid01" ItemsSource="{Binding Coll01}"/>
    3. </Grid>


    Code fürs Attached Property

    VB.NET-Quellcode

    1. Public Class Attached_Property
    2. Inherits DependencyObject
    3. Public Shared Function GetEvent(ByVal element As DataGrid) As EventArgs
    4. If element Is Nothing Then
    5. Throw New ArgumentNullException("element")
    6. End If
    7. Return element.GetValue(EventProperty)
    8. End Function
    9. Public Shared Sub SetEvent(ByVal element As DataGrid, ByVal value As EventArgs)
    10. If element Is Nothing Then
    11. Throw New ArgumentNullException("element")
    12. End If
    13. element.SetValue(EventProperty, value)
    14. End Sub
    15. Public Shared ReadOnly EventProperty As _
    16. DependencyProperty = DependencyProperty.RegisterAttached("Event",
    17. GetType(EventArgs), GetType(Attached_Property),
    18. New PropertyMetadata(Nothing, AddressOf BeginnCellEdit))
    19. Private Shared Sub BeginnCellEdit(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
    20. Dim Grid = TryCast(d, DataGrid)
    21. AddHandler Grid.BeginningEdit, Sub(sender, e2)
    22. MessageBox.Show("Event")
    23. End Sub
    24. End Sub
    25. End Class


    Und nun ein ganzer Haufen Fragen:
    1. Welcher Typ ist hier statt der versuchten "Eventargs" nötig?
    2. Wo muss der Code hin? Bleibt der in einer eigenen Klasse, oder muss er in die Klasse in der meine Methode drin steckt, die von hier nur ausgelöst werden soll?
    3. Falls es eine eigene Klasse bleibt; Wie leite ich dann den Befehl in mein ViewModel um?
    4. Der Code wird gar nicht durchlaufen. Muss das Ganze jetzt erst in mein Grid eingebunden werden und falls ja, wie?

    Gruß

    eddi
    Hallo

    Um ehrlich zu sein weis ich garnicht was ich darauf Antworten soll da ALLE deine Fragen in dem Kapitel über AttachedProperties in meinem Tutorialvideo durchgegangen werden.
    Dort erkläre ich genau worauf es ankommt und wie das ganze von statten geht. Falls du zu gewissen Bereichen in dem Video Fragen hast kannst du diese im SupportThread stellen.

    Bitte nicht böse sein das ich hier nun nicht abermals genau das selbe Seitenlang schreiben möchte. Bite schau dir das Video an.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##