Здравствуйте, Аноним, Вы писали:
А>Пока не совсем осознал ваше решение, проблема в том что изначально я не знаю будет ли там text-box и grid, а может будет textbox-combobox.
А>Т.е. я не могу заранее затачиваться на то какие будут связи, я должен их считать из файла конфигурации и просроить так как написано в конфигурации.
А>Я просто даю возможность пользователю самому выбрать какие контролы он будет использовать ( что то на подобии CMS ) и хотелось вот использовать синтаксис binding чтобы указывать как их связать.
А>Т.е. пользователь сам составляет композиции из контролов и устанавливает связи. Т.е. заранее готового объекта Model для его сценария нет, он должен сформироваться динамически.
А>Пользователь указывает что этот контрол должен брать данные из источника1 , источнику1 передать поля из контрола2,3,4.
А>Пользователь также может брать готовые композиции например как 1) и 2) и объединить их. Т.е. сделать вариант
А>3) textbox-datagrid-datagrid, работающих по 1)му и 2му сценарию одновременно.
Описанный подход можно приспособить и под этот сценарий, просто используете
рекурсивную композицию.
А>Еще не совсем ясно как быть с фильтром, т.к. фильтр предполагает вызов callback который возвращает true/false подходит элемент или нет, а как быть при частичной загрузке данных, когда все данные из базы нельзя загрузить их там может быть очень много что не хватит ресурсов, нужно чтобы изменение свойства фильтра каждый раз инициировало запрос к бд и считывало новый блок данных.
Не вижу проблем, у ListCollectionView есть свойство Filter, не нужно ничего фильтровать вручную. Надо просто поменять фильтр, фильтроваться будут те данные, которые уже загружены — при поступлении новых данных, они тоже будут проходить через новый фильтр.