Ich habe Probleme mit DataBindings. Ich habe eine ListView (wird korrekt angezeigt) mit Elementen und ich muss in der Lage sein, die Elemente in der Liste zu bearbeiten.Xamarin Forms DataBinding Wont Update
Ich wähle ein Element, das ein Modal öffnet (funktioniert gut) mit den Informationen des ausgewählten Elements (funktioniert gut). Wenn ich auf Speichern klicke, wird das Element nicht aktualisiert - Die Anzeige wird nicht aktualisiert, aber wenn ich das Element erneut auswähle, werden die Daten korrekt gehalten.
Ich habe folgendes Objekt:
public class Investigation : IDisposable
{
public List<InjuredPerson> InjuredPersonnel { get; set; }
...
}
Mein Ansichtsmodell ist wie folgt:
public class InvestigateUtilityDamagesViewModel : INotifyPropertyChanged
{
Investigation investigation;
private InvestigateDamages damage;
public event PropertyChangedEventHandler PropertyChanged;
public InvestigateUtilityDamagesViewModel(InvestigateDamages damage)
{
this.damage = damage;
Investigation = new Investigation();
Investigation.DamageID = damage.DamageID;
Investigation.InjuredPersonnel = damage.DamageDetails.InjuredPersonnel;
}
public Investigation Investigation
{
get { return investigation; }
set
{
if (investigation == value)
{
return;
}
investigation = value;
OnPropertyChanged("Investigation");
}
}
void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
SaveInvestigation();
}
}
Die XAML:
<ListView ItemsSource="{Binding Investigation.InjuredPersonnel, Mode=TwoWay}">
...
Die Seite, die Informationen aktualisiert eine Nachricht sendet, wie so : (funktioniert einwandfrei)
MessagingCenter.Send<EditInjuredPerson, InjuredPerson>(this, "InjuredPersonEdited", _injuredPerson);
Und die Empfangsseite (funktioniert)
private void SaveInjuredPerson(EditInjuredPerson sender, InjuredPerson InjuredPerson)
{
var Injured = this.FindByName<ListView>("listInjuries").SelectedItem as InjuredPerson;
if (Injured != null)
{
Injured.Name = InjuredPerson.Name;
Injured.Position = InjuredPerson.Position;
Injured.ContactNumber = InjuredPerson.ContactNumber;
Injured.Injury = InjuredPerson.Injury;
Injured.NextOfKinName = InjuredPerson.NextOfKinName;
Injured.NextOfKinNumber = InjuredPerson.NextOfKinNumber;
}
}
Die InjuredPersonnel Liste der OnProprertyChanged Ereignis auf sie erhöht braucht, nicht die Untersuchung (oder zusätzlich zu). –