Laden...

MVVMLight CellEditEnding+RelayCommand

Erstellt von Yeats vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.158 Views
Y
Yeats Themenstarter:in
102 Beiträge seit 2005
vor 11 Jahren
MVVMLight CellEditEnding+RelayCommand

Guten morgen,

Ich benutze ein DataGrid um Daten aus einer DB anzuzeigen. Die Daten werden von mir in einer ICollectionView bereit gestellt. Die Anzeige funktioniert soweit. Wenn ich im DataGrid eine Row markiere löse ich ein SelectionChanged Event aus. Diese Event ist dabei an ein Command gebunden.
Nun würde ich weiters gerne auf CellEditEnding Event hören. Dazu habe ich ein weiteres Command angelegt. Es wird korrekt aufgerufen, allerdings bekomme ich das Objekt von der Datenbindung her was nicht verändert ist.

xaml:


<DataGrid Grid.Row="1" x:Name="Cities" ItemsSource="{Binding CityCV}"/>
...
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<Command:EventToCommand Command="{Binding CitiesCellChangedCommand, Mode=OneWay}" PassEventArgsToCommand="True" CommandParameter="{Binding SelectedItem, ElementName=Cities}" />
</i:EventTrigger>
</i:Interaction.Triggers>
...
<DataGrid.Columns>
...
<DataGridTextColumn x:Name="Inhabitants" Binding="{Binding Inhabitants}" Header="Inhabitants" Width="1*"/>
</DataGrid.Columns>
...
</DataGrid>

ViewModel:



private List<CITY> _cities { get; set; }
private CollectionViewSource _cityCVS;
private ICollectionView _cityCV;
public ICollectionView CityCV
{
    get { return _cityCV; }
    set
    {
           if (_cityCV == value) return;
           _cityCV = value;
           OnPropertyChanged("CityCV");
     }
}
-......-
public RelayCommand<CITY> CitiesCellChangedCommand { get; private set; }


-.......-
_cityCVS = new CollectionViewSource { Source = _cities };
CityCV = _cityCVS.View;
-.......-
CitiesCellChangedCommand = new RelayCommand<CITY>(args => _entities.SaveChanges());

Auf was muss ich korrekterweise im Command binden um den veränderten Wert aus der Cell zu erhalten?

mfg Yeats