/ / EventToCommand funktioniert nie für mich - wpf, vb.net, mvvm, mvvm-light

EventToCommand funktioniert nie für mich - wpf, vb.net, mvvm, mvvm-light

Ich versuche, meinen aktuellen Code zu ändern und in Richtung eines MVVM-Designs zu verschieben.

Ich habe eine Netzsteuerung als solche:

        <ctl:GridContainer x:Name="GridResponses" CellValueChanged="GridResponses_CellValueChanged">
.
.
.
</ctl:GridContainer>

mit einem selbst als solches:

        Private Sub GridResponses_CellValueChanged(sender As Object, e As CellValueEventArgs)
If e.Column.FieldName = "PRIORITY" Then
.
.
.
End If
End Sub

Jetzt verschiebe ich den obigen Code auf MVVM Light und mache folgendes

        <ctl:GridContainer DataContext="{Binding ResponsesDataView}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellValueChanged">
<cmd:EventToCommand Command="{Binding GridCellValueChangedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ctl:GridContainer>

und in meinem ViewModel habe ich den folgenden RelayCommand wie folgt deklariert:

        Private m_cmdGridCellValueChanged As RelayCommand(Of CellValueEventArgs)

.
.
.

m_cmdGridCellValueChanged = New RelayCommand(Of CellValueEventArgs) _
(Sub(e)
If e.Column.FieldName = "PRIORITY" Then
.
.
.
End If
End Sub)

und es wird NIE ausgeführt! Ich habe sogar versucht, einen parameterlosen RelayCommand zu verwenden und eine MessageBox anzuzeigen.

Ist der EventToCommand in Bezug auf bestimmte Ereignisse eingeschränkt? Mache ich etwas falsch???

Antworten:

1 für die Antwort № 1

Eigentlich ist das Problem bindend. Sie suchen nach Befehl in ResponsesDataView. Sie müssen für den DataContext Ihrer View nach oben navigieren.

 <cmd:EventToCommand Command="{Binding DataContext.GridCellValueChangedCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType=UserControl}}"/>