Дополнительные понятия, связанные с элементами управления LightSwitch
Большинство важных понятий относительно расширений элемента управления для LightSwitch пошаговых руководствах рассматривается в 2, Пошаговое руководство. Создание расширения элемента управления "Значение" и Пошаговое руководство. Создание расширения элемента управления "Подробности". Однако есть несколько дополнительных понятий, которые могут применяться для некоторых типов элементов управления.
Добавить поддержку DisplayMode к элементу управления
В LightSwitch можно настроить элементы управления, чтобы вести себя по-другому, когда они отображаются в DataGrid или аналогичный контейнерный элемент управления. Возможно, это расширение функциональности для повышения производительности (изменяемые элементы управления могут быть более затратными отображения), достичь правильный переходы и дополнительные расширения функциональности, или оба. Если принимает элемент управления отображается в DataGrid, он может клавишу табуляции, через сетку, установить фокус не только в ячейку DataGrid, но и к базовому элементу управления. Это расширение функциональности поддерживает до 2 позиции табуляции для каждой ячейки и дополнительных проблем при запуске DataGrid для отображения пользовательского интерфейса кэшировать строки из-за виртуализации. Поэтому режим отображения элемента управления не работает пользователю предоставить ей фокус или изменение данных в элементе управления. Представление режима отображения элемента управления LightSwitch представляется в виде шаблона собственные данные в фабрике элемента управления.
Если элемент управления не изменяемые и производительность не является проблемой, шаблон режима отображения является необязательным. В зависимости от пользовательских свойств, заданные в элементе управления, можно выбрать для использования простого пользовательского интерфейса для режима отображения (например, TextBlock), или версии полного контроля с позициями табуляции и визуально проверки попадания отключить.
Файл кода программной части для управления Silverlight содержит класс ControlFactory, который предоставляет шаблон или шаблоны данных для элемента управления, отображаемое на экране LightSwitch. Класс содержит функцию GetDisplayModeDataTemplate, которая возвращает доступную только для чтения версию элемента управления при его данные не изменение в DataGrid.
В разделе Constants класса ControlFactory добавьте шаблон данных только для чтения. Отображает текст TextBlock вместо TextBox. Для демонстрации текст отобразится в поле красным цветом.
В функции GetDisplayModeDataTemplate, ControlFactory возвращает вновь определенный шаблон только для чтения.
В некоторых случаях пользователь может начать тип в DataGrid, если элемент управления по-прежнему используется соответствующий шаблон в режиме отображения. В этом случае LightSwitch DataGrid обрабатывает переключиться в режим редактирования шаблона. Чтобы убедиться, что никакие символы не теряются в случае параметр DataGrid кэширования любой введенный текст.
В классе кода программной части элемента управления класса (не ControlFactory ), реализуйте интерфейс ISupportTextInput и добавьте следующий метод реализации. Этот метод гарантирует, что новый ввод заменяет старый текст и устанавливается курсор в конец нового текста, чтобы пользователь мог продолжить печати.
Указание, что элемент управления средства просмотра
Если вы не хотите пользователю изменять данные в элементе управления, необходимо сделать его просмотра элемента управления путем добавления флажок IsViewer к метаданным элемента управления в файле .lsml:
Путем добавления этот флажок необходимо изменить, отображается ли элемент управления в некоторых случаях.
Реализация и управления редактора и управления просмотра
Общий шаблон имеют 2 версии элемента управления. Одна версия включает изменение данных («редактор»), и одна версия отображаются только данные («предварительный просмотр "). Например, AddressEditor и TextBox/AddressViewer /Label.
Элемент управления редактора, отображаются только для чтения данных отличается от управления просмотра, отображающих данные только для чтения. Многие элементы управления редактора будут отсутствовать в состоянии только для чтения. Все изменяемые элементы управления должны поддерживать режим только для чтения (IContentItem.IsReadOnly), даже если они имеют связыванное просмотра элемента управления. Этот режим только для чтения часто, но не всегда выглядит отличающимся от версии просмотра.
Снимок экрана при первой загрузке, LightSwitch определяет элементы управления, которые будут использоваться для всех элементов содержимого на экране. Если разработчик не определяет указанный элемент управления для использования, набор сопоставлений представления по умолчанию используется для определения элемента управления по умолчанию для узла. Эта оценка зависит от нескольких факторов, включая родительские элементы управления, схема связанных данных (например, вычисляемое поле, только для чтения таблицу базы данных или представление), а параметр свойства Use Read-Only Controls. Эти факторы определяется во время разработки, и нельзя изменять их во время выполнения. На основе этих вопросы или будут выделены управление просмотра или элемент управления редактора, предполагая, что они доступны.
Другие факторы могут изменяться во время выполнения, например свойства IsReadOnly, свойство X_IsReadOnly для поля сущности или параметры авторизации на основе коде пользователя и других факторов. Элемент содержимого никогда не изменяется во время выполнения. Поэтому, если элемент управления выделен редактора, может появиться в режим только для чтения на основе следующих факторов. Если просмотр был выбран экрана во время загрузки или разработчик определил просмотра во время разработки, просмотрщик должен игнорировать IContentItem.IsReadOnly и никогда не включать редактирования.
При создании пары элементов управления для типа предприятия, можно задать сопоставления по умолчанию, так что будут выбраны или просмотра или редактор, когда разработчик не определяет элемент управления.
Управления редактора и просмотра часто могут совместно использовать свойства. Например, оба элемента управления ImageViewer и ImageEditor предоставляют свойство Stretch. Каждый элемент управления был указывать свойство Stretch, LightSwitch увидит 2 эти свойства как другая и не распространяется значение одного свойства в другой. Для разрешения этой проблемы необходимо создать базовый элемент управления, из которого и редактор и управление просмотра наследуют, а затем задать свойство в базовом элемента управления:
Обратите внимание, что свойство IsViewer в средстве просмотра и этот только свойства наследуется от базового элемента управления. Не наследуются другие атрибуты, такие как AttachedLabelSupport, SupportedDataTypes. В этом случае идентификатор свойства MyModule:MyBaseControl/Properties[MyCommonProperty].