Как передать свойство, измененное свойством, предку? - PullRequest
1 голос
/ 17 марта 2009

Я уверен, что мне здесь не хватает некоторых основ, поэтому, пожалуйста, потерпите меня.

У меня есть два объекта, SalesOrder и SalesOrderLineItem. Элементы строки хранятся в Observablecollection<SalesOrderLineItem> SalesOrder, и если я добавлю позиции, мой listView с привязкой к базе данных узнает о новых позициях.

Теперь у меня возникла проблема: SalesOrder имеет свойство «Только для чтения» с именем «OrderTotal», которое знает, какова общая цена всех объединенных позиций.

Если я изменю количество или цену позиции, я, похоже, не знаю, как получить уведомление об изменении, чтобы оно доходило до "OrderTotal".

Оба класса наследуются, и огонь INotifyPropertyChanged.

Чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 17 марта 2009

ObservableCollection уведомляет только о добавлении, удалении или обновлении списка, а не об изменении свойства элемента в коллекции.

Класс SalesOrder должен прослушивать каждое событие PropertyChanged SalesOrderLineItem.

-

Свойство OrderTotal также может быть динамическим, каждый раз генерируя итоговое значение ...

0 голосов
/ 30 сентября 2013
public ObservableCollection<TestClass> List
    {
        get { return _List; }
        set {
            if (_List!= value)
            {
                _List = value;
                raisePropertyChange("List");
                List.ToList().ForEach(i=> i.PropertyChanged+= (o,e)=>
                {
                    //PropertyChanged.Raise(() => List);
        raisePropertyChange("List");
        //or what ever you want
                }
            );


            }
        }
    }
0 голосов
/ 17 марта 2009

Если вы любите приключения, вы можете попробовать BindableLinq или что-то подобное. Позволяет выставить результат запроса, который прослушивает изменения.

Но это еще не бета, и я не уверен, что это когда-нибудь будет ... ContinuousLinq - это еще один, но он еще не поддерживает Silverlight.

Кроме этого, вам придется прослушивать каждого потомка и добавлять / удалять обработчики при каждом изменении коллекции.

...