Wenn ich nicht falsch bin, scheint es, dass Sie tatsächlich zu einer Klasse Feld zu binden versuchen keine Eigenschaft.
Datenbindung erfordert Eigenschaften, um ordnungsgemäß zu funktionieren. Um dies zu erreichen, müssen Sie ein private
Hintergrundfeld und eine public
Eigenschaft erstellen, auf die dann mit Datenbindung zugegriffen werden kann.
private ObservableCollection<ForeCast> _foreCastsByDates;
public ObservableCollection<ForeCast> ForeCastsByDates
{
get
{
return _foreCastsByDates;
}
set
{
_foreCastsByDates = value;
//notify about changes
OnPropertyChanged();
}
}
Sie die Eigenschaft bemerkt haben verwendet eine OnPropertyChanged()
Methode in der Setter. Um tatsächlich die Benutzeroberfläche über Änderungen der Immobilie zu informieren, müssen Sie den INotifyPropertyChanged
-Schnittstelle auf Ihrem Page
implementieren:
public partial MainPage : Page, INotifyPropertyChanged
{
// your code...
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Die OnPropertyChanged
Methode, um das PropertyChanged
Ereignis ausgelöst, die die Zuhörer darüber informiert, dass eine Eigenschaft geändert wird. In diesem Fall müssen wir über die Änderungen an der ForeCastsByDates
Eigenschaft informieren. nur mit dem CallerMemberNameAttribute
neben dem OnPropertyChanged
Methodenparameter verwendet, wird der Parameter auf den Namen des Anrufers (in diesem Fall die ForeCastsByDates
Eigenschaft automatisch eingestellt.
schließlich die {x:Bind}
Syntax standardmäßig OneTime
Modus, das heißt, es wird aktualisiert nicht einmal und nicht auf Eigenschaft geändert hören. um alle späteren Aktualisierungen der Immobilie sicherzustellen, werden reflektiert, verwenden
{x:Bind ForecastsByDates, Mode=OneWay}
Wichtig zu erwähnen ist, dass Sie Änderungen an der ForecastsByDates
Eigenschaft machen müssen sich die Benutzeroberfläche benachrichtigen (die Eigenschaft s etter muss ausgeführt werden, um die Methode OnPropertyChanged
aufzurufen. Wenn Sie nur _foreCastsByDates = something
tun, wird das Feld geändert, aber die Benutzeroberfläche wird nicht darüber informiert und die Änderung wird nicht wiedergegeben.
Beispielcode teilen –
@VinothRajendran Hat meine Post mit Beispielcode bearbeitet – axcelenator
Ist 'ForeCastsByDates' über Änderungen am Objekt (nicht über die Objekte) benachrichtigt?Wenn nicht, kann 'set'-Operationen auf' ForeCastsByDates' eine Benachrichtigung ausgeben oder die Sammlung einmal in ctor setzen und '.Clear' und' .Add' für zukünftige Anpassungen verwenden. –