У меня есть сетка данных с 3 столбцами. Столбцы Property, Operator, Value
. Они о документах, хранящихся в нашей базе данных. Значения столбцов Property
и Operator
определяются из перечисления в бизнес-объектах.
У меня есть следующий класс для привязки DataGrid:
public class DocumentProperty
{
public SearchProperties SearchProperty { get; set; }
public SearchOperator Operator { get; set; }
public string SearchValue { get; set; }
}
Первые два свойства являются перечислениями. Я связал наблюдаемую коллекцию вышеупомянутого класса с моей сеткой данных. Все столбцы являются шаблонными столбцами. Первые два столбца имеют CellEditTemplate
с определенным в них списком. Я связал перечисления с помощью провайдеров данных объекта. Третий столбец - это столбец шаблона, который загружается с помощью средства выбора шаблонов. Причина этого состоит в том, чтобы разрешить загрузку различных элементов управления на основе свойства, выбранного в первом столбце:
Также у меня есть событие изменения выбора в выпадающем списке, чтобы динамически загружать элементы управления (явно установить таблицу данных для столбца) в третьем столбце и установить источники данных (для AutoCompleteBox). Вышеупомянутый подход работает нормально, когда сетка изначально загружена с установкой Allow Add Row, установленной как true. Я могу получить загруженные элементы управления в объект (используя выбранный элемент в AutoCompleteBox и т. Д.).
Но я сталкиваюсь с проблемами в вышеупомянутых входных данных, которые сохраняются в качестве фильтра поиска и извлекаются. Во время поиска я не могу привязать значение свойств к динамически загружаемым элементам управления. Я пробовал различные события DataGrid (RowLoading, Loaded, SelectedCellChanged и т. Д.).
Наконец, я могу установить значение элементов управления в селекторе шаблонов. Но когда я вижу экран, он показывает пустой контент (для автозаполнения и комбинирования). Кто-нибудь может подсказать, как я могу связать динамические элементы управления с SearchValue?
Подробнее:
Содержимое вышеуказанной сетки хранится в виде наблюдаемой коллекции DocumentProperty. Значения объекта помещаются в таблицу базы данных в виде XML. Когда пользователь снова входит в систему, содержимое XML преобразуется в наблюдаемую коллекцию DocumentProperty и снова привязывается к сетке. Здесь я столкнулся с проблемой, заключающейся в том, что, если я помещу шаблон ячейки и поместу текстовый блок внутрь, я могу связать свойство SearchValue без каких-либо проблем. Но я зачищаю идентификаторы связанного объекта в свойстве значения поиска. Таким образом, текстовый блок в сетке с привязками всегда будет отображать идентификатор.
Поскольку я хочу показать соответствующее имя Tempalte, Docment, Owner и т. Д. В полях AutoCompleteBoxes выше. Поэтому я делаю столбец как столбец DataTemplate с селектором шаблона ячейки.