WPF: Property Binding Problem



  • Hallo,

    ich binde meinentwegen eine Object der klasse "Foo" an ein ListView Control! und binde die einzlene Property der klasse "Foo" an GridViewColums! was auch funktionierte!

    wenn ich aber nun die Klasse "Foo" in einer Klasse "Bar" wrappe, und properties der "Bar" Klasse binde werden diese auch angezeigt, aber nur beim laden.. ändert sich proeprty in "Foo" werden die nich an "Bar" an das binding weiter gegeben.. mach ich was falsch?

    public class Foo
    {
      public string Data{ get{...} set{..}}
    } 
    
    public class Bar
    {
     public Bar(Foo elem)
    {
    _elem=elem;
    }
    private Foo _elem;
      public string Data{ get{retunr elem.Data;} set{elem.Data=value;}}
    }
    


  • du musst an der stelle wo sich das property aendern ein PropertyChanged absetzen - stichwort INotifyPropertyChanged



  • ja danke, das hab ich gestern gemerk die Klasse Foo implementiert INotifyPropertyChange.. musste es dann in Bar auch implementieren und durschleifen! Jetzt klappt es danke;)



  • als mvvm sicht betrachtet ist es n bissl eigenartig
    denn dann waere "Foo" das model, und das model implementiert kein INotifyPropertyChanged
    mein vorschlag waere:

    public class Foo // model
    {
        public string Data { get; set; }
    }
    
    public class Bar : INotifyPropertyChanged // viewmodel
    {
        public Bar(Foo elem)
        {
            _elem = elem;
        }
    
        private Foo _elem;
        public string Data
        {
            get { return elem.Data; }
            set
            {
                elem.Data=value;
                OnPropertyChanged("Data");
            }
        }
        private void OnPropertyChanged(string property)
        {
            ...
        }
    }
    

    es kann aber natuerlich sein das du Foo irgendwo auch separat als viewmodel verwendest, dann stellt sich nur die frage wozu du dann Bar brauchst wenn du Foo direkt nehmen koenntest

    //edit: tags vergessen


Anmelden zum Antworten