Ich habe Schwierigkeiten zu verstehen, wie ObservableCollection in ViewModel2, das in ViewModel1 definiert wurde, zu aktualisieren. Ich habe viel darüber nachgesucht, wie man das macht, aber ich habe kein richtiges Verständnis bekommen. Ich benutze MVVM Light Framework.Mvvm: Wie aktualisiere ich meine ObservableCollection <customobject> von einem anderen ViewModel?
Ich habe ein DozentViewModel, das eine ObservableCollection von Dozenten hat. Ich habe ein weiteres AddDozentViewModel, mit dem neue Dozent über Entity Framework zur Datenbank hinzugefügt werden können. Aber wie füge ich das neue Dozent meiner ObservableCollection im DozentViewModel hinzu?
Das ist mein DozentViewModel:
public class DozentViewModel : ViewModelBase
{
private IDozentDB _dozentDB;
private ObservableCollection<Dozent> _dozentList;
private string _nachName;
private string _vorName;
private string _akadGrad;
public RelayCommand ShowAddDozentCommand { get; private set; }
public ObservableCollection<Dozent> DozentList
{
get { return _dozentList; }
set
{
Set(ref _dozentList, value);
RaisePropertyChanged("DozentList");
}
}
public DozentViewModel(IDozentDB dozentDB)
{
_dozentDB = dozentDB;
DozentList = new ObservableCollection<Dozent>();
// To get list of all Dozents
DozentList = _dozentDB.GetAllDozents();
ShowAddDozentCommand = new RelayCommand(ShowAddDozentViewExecute);
}
ich die DozentList eigenschaft auf meine DozentView gebunden habe:
<DataGrid ItemsSource="{Binding DozentList,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" CanUserAddRows="False" IsReadOnly="True" Grid.Column="0" >
Das ist mein AddDozentViewModel des neuen Dozenten in meiner SQL-Datenbank erstellt.
Ich verstehe, dass ich gerade den neuen Dozent zur Datenbank hinzufüge und die ObservableCollection nicht aktualisiere. Daher wird meine DataGridView auf DozentView nicht aktualisiert. Wie mache ich das? Jede Information wäre sehr hilfreich !!
Danke, Vinitha
Vielen Dank für diese Klarstellung. – Vini
Es hat funktioniert !! :) Ich habe einen trivialen Zweifel. Ich mochte die Idee, neu hinzugefügte Dozent aus der Datenbank zu holen und sie meiner ObservableCollection hinzuzufügen. In diesem Fall fange ich das Dozent mit seiner ID wie folgt an: 'Dozent newDozentFromDB = _dozentDB.GetDozent (dozent.DozentId);'. Ich hoffe, dass ich den Dozent mit der richtigen Dozent ID retreisiere? Wie auch immer, es funktioniert und ich kann die aktualisierte Sammlung im Datagrid anzeigen. – Vini
Ja, ich war mir nicht sicher, wie du die Datenbank bearbeitest, also habe ich die Besonderheiten weggelassen, aber jede Art, deinen eigenen Dozent zu identifizieren, ist in Ordnung. Sie könnten dies sogar in eine Methode umwandeln, die ein 'Dozent' akzeptiert, es der Datenbank hinzufügt und ein' Dozent' zurückgibt, das Sie zur Sammlung hinzufügen können. –