/ / EventToCommand मेरे लिए कभी काम नहीं करता - wpf, vb.net, mvvm, mvvm-light

EventToCommand मेरे लिए कभी काम नहीं करता - wpf, vb.net, mvvm, mvvm-light

मैं अपना वर्तमान कोड बदलने और इसे एमवीवीएम डिज़ाइन की ओर ले जाने का प्रयास कर रहा हूं।

मेरे पास ग्रिड नियंत्रण है:

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

यहां तक ​​कि इस तरह के साथ:

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

अब मैं उपरोक्त कोड को एमवीवीएम लाइट का उपयोग करने के लिए आगे बढ़ रहा हूं और निम्न कार्य कर रहा हूं:

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

और मेरे व्यूमोडेल में मेरे पास निम्न रिले कॉमांड निम्नानुसार घोषित है:

        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)

और यह कभी निष्पादित नहीं करता है! मैंने पैरामीटर-कम रिलेकॉमैंड का उपयोग करने का भी प्रयास किया और एक संदेशबॉक्स दिखाने की कोशिश की और यह घटना कार्य नहीं किया।

क्या EventToCommand विशिष्ट घटनाओं के संदर्भ में सीमित है? क्या मुझसे कुछ ग़लत हो रहा है???

उत्तर:

उत्तर № 1 के लिए 1

वास्तव में समस्या बाध्यकारी में है। आप कमांड की तलाश में हैं ResponsesDataView। आपको अपने व्यू के डेटा कॉन्टेक्स्ट के लिए आगे बढ़ने की आवश्यकता है -

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