Прочитал немного об IObservable, и мне интересно, что шаблон даст мне (если что-нибудь) в моем сценарии.
У меня есть приложение WPF с сеткой данных, сетка привязана к коллекции IObservable продукта.
ProductList.DataContext = AppState.Current.Products
... где AppState.Current.Products возвращает ObservableCollection<Product>
Мои цели:
- Отслеживание списка измененных объектов
- Сообщите пользовательскому интерфейсу, что объект изменился, чтобы я мог включить кнопку сохранения
Мой класс продуктов выглядит примерно так...
public class Product
{
string _desc;
public string Description
{
get { return _desc; }
set { _desc = value; }
}
}
Теперь, если я обновлю столбец описания в строке моей сетки, будет вызван установщик для Description действительно. Поэтому я мог бы заказать здесь некоторый код, чтобы установить флаг Dirty для моего продукта, который затем я мог бы использовать для запроса списка измененных продуктов, которые необходимо сохранить в БД.
Я думаю, что я мог бы использовать IObservable для достижения моей второй цели информирования пользовательского интерфейса о том, что строка была изменена? Или есть более простой метод, например, какое-то свойство в сетке?
Если я буду использовать IObservable, я видел примеры, когда продукт предоставляет события, на которые можно подписаться. Однако я не хочу подключать обработчики событий ко всем своим объектам. Мне нужно что-то, что говорит мне в целом, когда какой-либо объект в коллекции изменился.
Кроме того, как мне подключить это уведомление к своему пользовательскому интерфейсу.