Laden...

PropertyChanged aus abgeleiteter Klasse verwenden

Erstellt von BJA-CH vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.206 Views
B
BJA-CH Themenstarter:in
59 Beiträge seit 2017
vor 6 Jahren
PropertyChanged aus abgeleiteter Klasse verwenden

Salü zäme
Ich habe in einer Klasse als Basisklasse eine "ObservableCollection" eingebunden. In der Klasse gibt es sonst noch ein Attribut "PositionName". Sie Programm-Code unten.


    public class RadarPositionen : ObservableCollection<DistanzPosition>, INotifyPropertyChanged
    {
        private string _PositionName;

        public RadarPositionen()
            : base()
        { }

        public string PositionName
        {
            get { return this._PositionName; }
            set
            {
                this._PositionName = value;
                this.RaisePropertyChanged("PositionName");
            }
        }

        protected void RaisePropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = base.PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyName));
        }

Den event "PropertyChanged" kann ich in der Klasse nicht mehr festlegen, weil dieser schon in der Basisklasse besteht. Trotzdem möchte ich die Veränderung des zusätzlichen Attributs (PositionName) mit PropertyChanged an den XAML-Code weiterleiten.
Wie kann ich aber auf den PropertyChangedEventHandler der Basisklasse zugreifen, damit ich in der Klasse diesen Event auslösen kann?
Meine übliche Anwendung mit der Funktion "RaisePropertyChanged" (siehe im Code oben funktioniert nicht. Dies ergibt die Fehlermeldung "Das ObservableCollection<DistanzPosition>.PropertyChanged-Ereignis kann nur links von += oder -= verwendet werden.".

Kann mir jemand helfen??

H
523 Beiträge seit 2008
vor 6 Jahren

ObservableCollection implementiert das Interface INotifyPropertyChanged bereits. Du kannst einfach die OnPropertyChanged-Methode der ObservableCollection verwenden:


        public string PositionName
        {
            get { return this._PositionName; }
            set
            {
                this._PositionName = value;
                this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("PositionName"));
            }
        }

709 Beiträge seit 2008
vor 6 Jahren

Zusätzlich sei noch erwähnt, dass "PositionName" eine Eigenschaft/Property und kein Attribut ist.

Mehr zu Attributen in .NET findest du hier: Verwenden von Attributen in C#