Пошаговое руководство. Создание расширения элемента управления "Значение"

В этом пошаговом руководстве демонстрируется создание расширения элемента управления значение LightSwitch. Можно использовать элемент управления значение, одного поля сущности на экране LightSwitch. Управление значение обычно предназначен для использования с типами набора данных. Например, можно использовать элемент управления текстового поля в LightSwitch в строки и числовые типы, но не двоичным данным отображения.

Для создания расширения элемента управления необходимо выполнить следующие задачи:

  • Создание проекта расширения элемента управления.

  • Обновление Значок элемента управления.

  • Указать поддерживает типы данных.

  • Привязка к данным LightSwitch.

  • Код пользователя для получения элемента управления.

  • Добавьте только для чтения поддержка.

  • Тестирование элемента управления значение.

Обязательные компоненты

  • Visual Studio 2013 Professional

  • Пакет SDK Visual Studio 2013

  • Набор средств LightSwitch расширяемости для Visual Studio 2013

Создание проекта расширения элемента управления

Первым этапом является создание проекта и добавление шаблон Элемент управления.

Создание проекта расширения

  1. В Visual Studio в строке меню выберите Файл, Создать, Проект.

  2. В диалоговом окне Создание проекта разверните узел Visual Basic или Visual C#, разверните узел LightSwitch и выберите узел Расширение среды, а затем выберите шаблон Библиотеки DLL расширения LightSwitch.

  3. В поле Имя введите ValueControlExtension в качестве имени для вашей библиотеки расширения. Это имя отображается на вкладке Расширения LightSwitch Конструктор приложений.

  4. Нажмите кнопку ОК, чтобы создать решение, содержащее 7 проектов, необходимых для расширения.

Выбрать тип расширения

  1. В Обозреватель решений откройте контекстное меню для проекта ValueControlExtension.Lspkg и выберите команду Открыть с помощью.

  2. В диалоговом окне Открыть с помощью выберите Редактор (текстовый) XML, а затем нажмите кнопку ОК.

  3. В меню Проект выберите Добавить новый элемент.

  4. В диалоговом окне Добавить новый элемент выберите Элемент управления.

  5. В поле Имя введите ValueControl в качестве имени для расширения. Это имя будет отображаться в конструкторе LightSwitch экрана.

  6. Нажмите кнопку ОК. Файлы будут добавлены в нескольких проектов в решении.

Обновление Значок элемента управления

2 С именем файла изображения ValueControl.png были добавлены в решение. одно в папке ControlImages проекта ValueControlExtension.Client.Design, а в папке ControlImages проекта ValueControlExtension.Design. Изображение в файле используется в качестве значка. Можно заменить изображение по умолчанию с одним, уникальным образом определяет элемент управления.

Изменить изображение Значка

  1. В Обозреватель решений в папке ControlImages проекта ValueControlExtension.Client.Design откройте контекстное меню для файла ValueControl.png и выберите команду Открыть с помощью.

  2. В диалоговом окне Открыть с помощью, выберите Paint, а затем выберите кнопку ОК.

  3. На рисунке измените изображение, например, измените цвет или добавить фигуры, а затем сохраните файл и вернитесь в Visual Studio.

  4. Выберите файл ValueControl.png, а затем в строке меню выберите Изменить, Копировать.

  5. Выберите папку ControlImages проекта ValueControlExtension.Design, а затем в строке меню выберите Изменить, Вставить. В сообщении, отображающем вопрос о необходимости заменить файл, нажмите кнопку Да.

Определите поддерживаемые типы данных

Каждый элемент управления имеет коллекцию SupportedDataTypes, которая определяет, какие типы данных элемент управления может отображать. Необходимо определить эти сведения с помощью имени модуля и имени типа данных. Для типов предприятия в одном расширении необходимо указать только имя типа предприятия. Можно использовать «: » как ярлык для Microsoft.LightSwitch:. Для списка поддерживало типов данных см. в разделе Типы данных, поддерживаемые для расширений LightSwitch.

Указан только ненулевые типы для SupportedDataTypes, но этот элемент управления должен поддерживать подобные версии всех типов данных, которые определены.

Определить, поддерживаемые типы данных

  1. В Обозреватель решений откройте файл в Метаданные, папки ValueControl.lsmlЭлементы управления проекта ValueControlExtension.Common.

  2. Найдите элемент <Control.SupportedDataTypes> и добавьте следующий код после элемента <SupportedDataType DataType=":String"/>.

    <SupportedDataType DataType=":Boolean"/>
          <SupportedDataType DataType=":Byte"/>
          <SupportedDataType DataType=":DateTime"/>
          <SupportedDataType DataType=":Decimal"/>
          <SupportedDataType DataType=":Double"/>
          <SupportedDataType DataType=":Guid"/>
          <SupportedDataType DataType=":Int16"/>
          <SupportedDataType DataType=":Int32"/>
          <SupportedDataType DataType=":Int64"/>
          <SupportedDataType DataType=":SByte"/>
          <SupportedDataType DataType=":Single"/>
    

    Для каждого поля сущности, как любой из этих типов данных, ValueControl будет показано, как количество вариантов в конструкторе экрана.

Привязка к данным LightSwitch

Основное элемент управления Silverlight необходимо указать его привязки к и отображает данные из приложения LightSwitch. LightSwitch содержит IContentItem в качестве контекста данных для каждого элемента управления. Этот элемент включает содержимого и данных для отображения и метаданные свойства, например DisplayName, и загружен ли данные. IContentItem также имеет свойства Value и StringValue, которые содержат фактические текущие данные для элемента управления.

В элемент управления Silverlight должно содержать ссылку на пространство имен LightSwitch.Presentation.Framework, которая содержит некоторые общие управления стандартных блоков. Например, LightSwitch предоставляет StatesControl, можно использовать, чтобы показать данные и ошибки проверки загрузки.

Привязка к данным

  1. В Обозреватель решений откройте файл в Презентация, папки ValueControl.xamlЭлементы управления проекта ValueControlExtension.Client.

  2. Добавьте следующее объявление пространства имен после элемента xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml".

    xmlns:framework ="clr-namespace:Microsoft.LightSwitch.Presentation.Framework;assembly=Microsoft.LightSwitch.Client"
    
  3. Замените элемент <TextBox Text="{Binding StringValue, Mode=TwoWay}"/> на следующий XAML.

    <!-- 
        Bind two-way to StringValue, which will enable automatic conversion and validation from or to any of the supported data types,
        and will also automatically support Choice lists.
        You also bind several alignment properties, so the control will honor what the application developer sets in the property sheet.
        The tooltip is bound to the description provided by the application developer.
    
        We also put the TextBox inside StatesControl, so we can show loading states or errors correctly.
        -->
        <framework:StatesControl HorizontalAlignment="Stretch">
            <TextBox x:Name="TextBox" Text="{Binding StringValue, Mode=TwoWay}"
                 TextAlignment="{Binding Properties[Microsoft.LightSwitch:RootControl/TextAlignment]}"
                 HorizontalAlignment="Stretch"
                 ToolTipService.ToolTip="{Binding Description}"/>
        </framework:StatesControl>
    

    Привязка StringValue рекомендуется использовать для элементов управления, такие как TextBox, которые не указывают, что несколько типов данных, поскольку оно автоматически преобразует типы данных с оптимальной поддержки проверки. Он также выполняет любое автоматическое форматирование, например отображаемые имена отображения в списке select вместо значений. Управления не, такие как CheckBox, можно выполнить привязку к Value. Подсказка привязана к описанию, разработчик приложения указан. TextAlignment привязано к значению свойства TextAlignment. Наконец, TextBox помещается внутри StatesControl так, LightSwitch отображает состояния ошибки загрузки и правильно.

Код пользователя для получения элемента управления

LightSwitch предоставляет метод FindControl(), разработчики могут использовать для непосредственного доступа к элемент управления Silverlight из своего кода экрана и включить в событиях из элемента управления или задать свойства непосредственно над ним. Для этого метода, который должен выполняться, элемент управления должен определить, с внутреннего элемента управления Silverlight разработчик должен взаимодействия. Как правило, элемент управления LightSwitch должно возвращать стандартной элемента управления Silverlight в этот метод. В этом примере StatesControl разработчик взаимодействует с внутренним элементом управления TextBox.

Включить доступ к коду пользователя

  1. В Обозреватель решений в списке Презентация выберите папку Элементы управления проекта ValueControlExtension.Client, будет открыт файл кода программной части ValueControl.xaml.vb или ValueControl.xaml.cs.

  2. Добавьте следующий код для реализации интерфейса IContentVisual.

    Public Partial Class ValueControl
        Inherits UserControl
        Implements IContentVisual
    
    public partial class ValueControl : UserControl, IContentVisual
    
  3. Добавьте реализация интерфейса.

    Public ReadOnly Property Control As Object Implements Microsoft.LightSwitch.Presentation.IContentVisual.Control
                Get
                    Return Me.TextBox
                End Get
            End Property
    
            Public Sub Show() Implements Microsoft.LightSwitch.Presentation.IContentVisual.Show
             End Sub
    
    object IContentVisual.Control
            {
                get { return this.TextBox; }
            }
    
            void IContentVisual.Show()
            {
            }
    

    Реализация интерфейса обычно очень проста. Большинство элементов управления должны реализовывать только свойство Control. Если элемент управления, например расширитель, предназначен скрывать часть интерфейса пользователя (UI), можно использовать метод Show для указания ее часть.

    Некоторые элементы управления имеют более сложное время существования для них внутренних управления Silverlight, чем самому элементу управления. Например, модальное окно не может создать само окно Silverlight до тех пор, пока его не нажата кнопка. Для этого типа так необходимо реализовать интерфейс INotifyControlChanged, чтобы указать LightSwitch при внутренний контроль недоступен или доступным.

Добавьте только для чтения поддержка

Разработчики LightSwitch должны использовать элементы управления для отображения данных, пользователи не могут изменять. В некоторых случаях данные для элемента управления должны быть доступны только для чтения, на котором вошел в систему пользователь или некоторые логику бизнес-правила на экране. Указан только для чтения состояние элемента управления, присвоив свойству IsReadOnly объекта IContentItem, который контекст данных для элемента управления.

Добавить только для чтения поддержка

  1. В Обозреватель решений в списке Презентация выберите папку Элементы управления проекта ValueControlExtension.Client, будет открыт файл ValueControl.xaml.

  2. Добавьте следующий элемент привязки сразу после элемента TextBox x:Name="TextBox" Text="{Binding StringValue, Mode=TwoWay}".

    IsReadOnly="{Binding IsReadOnly}"
    

    В зависимости от элемента управления, могут потребоваться другого расширения функциональности для IsReadOnly. Можно отключить некоторые или все элементы управления. В простом примере текстового поля, свойство IsReadOnly в IContentItem привязано к свойству IsReadOnly в текстовом поле.

    В этот момент управление значение готово, и его можно тестировать в LightSwitch.

Тестирование элемента управления значение

Элемент управления можно тестировать значение в экспериментальном экземпляре Visual Studio. Если вы еще не применяются другой проект LightSwitch расширяемости, необходимо включить экспериментальный экземпляр первым.

Включить экспериментальный экземпляр

  1. В Обозреватель решений выберите проект BusinessTypeExtension.Vsix.

  2. В строке меню выберите Проект, BusinessTypeExtension.Vsix Properties.

  3. На вкладке Отладка в группе Действие при запуске выберите Запуск внешней программы.

  4. Введите путь к исполняемому файлу Visual Studio, devenv.exe.

    По умолчанию в 32-разрядной системе, путь C: \Program Files\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe; на 64-разрядной системе это C: \Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe файлов \Program (x86).

  5. В поле Аргументы командной строки введите /rootsuffix Exp.

    Примечание

    Все последующие проектов расширяемости LightSwitch также будут использовать этот параметр по умолчанию.

Для управления сведения

  1. В меню Отладка выберите Начать отладку. Откроется экспериментальный экземпляр Visual Studio.

  2. В диалоговом окне Создание проекта разверните узел Visual Basic или узел Visual C#, выберите LightSwitch, а затем выберите шаблон Классическое приложение LightSwitch.

  3. В поле Имя введите ValueControlTest, а затем нажмите кнопку ОК, чтобы создать тестовый проект.

  4. В строке меню выберите Проект, Свойства ValueControlTest.

  5. В конструкторе проектов, на вкладке Расширения выберите флажок ValueControlExtension.

  6. Создание простого приложения LightSwitch, содержит таблицу, которая содержит несколько полей различные типы данных, включая String и DateTime.

  7. Добавьте на Список и сведения, а затем в конструкторе экрана измените элемент управления Надпись для одного из полей String значение ValueControl.

  8. В меню Отладка выберите Начать отладку. Обратите внимание на расширения функциональности управления ValueControl в приложении и проверьте, что текст отображается правильно.

  9. Открытие времени выполнения конструктор экрана и изменить элемент управления DateTimePicker для одного из полей DateTime значение ValueControl. Убедитесь, что ValueControl работает для поддерживаемых типов данных, определенного ранее.

Следующие действия

В данном пошаговом руководстве, значение элемента управления; теперь должны быть полностью действует расширения элемента управления, который можно использовать в любом проекте LightSwitch. Это было только один пример элемента управления значение; можно создать элемент управления, значительно отличающийся по виду или расширения функциональности. Одни и те же основные этапы и принципы применяются к любому элементу управления значение, но другие понятия, которые применяются в других ситуациях. Например, может понадобиться обработка ошибок проверки или поддерживать изменение внутри элемента управления DataGrid. Для получения дополнительной информации см. Дополнительные понятия, связанные с элементами управления LightSwitch.

Если планируется распределенного расширение элемента, то дополнительные пары, которые необходимо предпринять. Чтобы убедиться, что данные, отображаемые для расширения в конструкторе проектов и в Диспетчер расширений верны, обновить свойства для пакета VSIX. Для получения дополнительной информации см. Практическое руководство. Задание свойств пакета VSIX. Кроме того, некоторые действия, которые следует рассмотреть, если планируется распределенного расширение для открытого доступа. Для получения дополнительной информации см. Практическое руководство. Распространение расширения LightSwitch.

См. также

Задачи

Практическое руководство. Создание элемента управления LightSwitch

Практическое руководство. Распространение расширения LightSwitch

Практическое руководство. Задание свойств пакета VSIX

Основные понятия

Дополнительные понятия, связанные с элементами управления LightSwitch

Определение, переопределение и использование свойств элемента управления LightSwitch

Набор средств расширения LightSwitch для Visual Studio 2013