Построение нового специального элемента управления, привязанного к данным

однако иногда вам возможно придется

К настоящему моменту я представил примеры того, как специальный элемент управления производится от встроенного элемента Framework и как разрабатывается пользовательский элемент управления, содержащий другие элементы и экспонирующий интерфейс привязки данных. Однако иногда вам, возможно, придется строить специальные элементы управления, которые не следуют простым сценариям инкапсуляции существующих элементов Framework, и вы, возможно, захотите поддерживать в них привязку данных. Если вы сможете осуществить хотя бы инкапсуляцию источника привязки в качестве дочернего компонента вашего элемента управления, то вы можете оставить ему всю грубую работу по привязке данных, как вы видели в последнем примере с FilteredGrid. Этот элемент управления естественно поддерживает все те мириады форм коллекций, которые поддерживаются элементами управления Framework, просто благодаря использованию источника привязки для сортировки данных из любого места, представленного в форме источника данных и компонента данных. В том случае, когда вам будет необходимо более непосредственное участие в отображении вашего элемента управления и доступе к данным, к которым он привязан, вам, возможно, придется вообще отказаться от поддержки со стороны источника привязки и вернуться к самостоятельной работе с различными формами коллекций данных. Если вы это сделаете, одним из возможных подходов будет непосредственная работа со всеми различными типами интерфейсов, описанными в главе 7, выяснение того, имеете ли вы дело со списком, списком списков, списком списков списков и т. д., и самостоятельное получение информации о типах, и реализация функций поиска и сортировки. Но в классах Framework можно найти и другую поддержку помимо источников привязки, которая может отчасти избавить вас от этой неприятной работы, как вы увидите в следующем примере. Итак, для демонстрации того, что значит «быть поближе к земле» и как реализовать элемент управления, не полагающийся в своей привязке к данным на какие-либо элементы управления Framework, давайте сразу приступим к практическому примеру.