Каково различие между Библиотекой Пользовательского элемента управления и Библиотекой Пользовательского элемента управления?

ALTER TABLE emails add column `email_id` int(5) ZEROFILL PRIMARY KEY AUTO_INCREMENT;
SET @x:=0;
UPDATE emails SET email_id = LPAD(@x:= (@x+1),4, '0') WHERE 1=1;

Сначала мы добавили столбец email_id в таблицу emails и установили его в качестве первичного ключа, используя этот запрос:

ALTER TABLE emails add column `email_id` int(5) ZEROFILL PRIMARY KEY AUTO_INCREMENT;

Затем мы объявили глобальную переменную с именем x и значение по умолчанию 0:

SET @x:=0;

И, наконец, мы заполнили столбец идентификатором, заполненным нулями:

UPDATE emails SET email_id = LPAD(@x:= (@x+1),4, '0') WHERE 1=1;

Мы использовали LPAD для заполнения нулями.

161
задан Lightness Races with Monica 11 July 2011 в 23:36
поделиться

2 ответа

На практике пользовательские элементы управления - это то, что вы реализуете на уровне кода, в то время как вы можете использовать XAML для пользовательских элементов управления. Настраиваемые элементы управления расширяют один из базовых классов элемента управления WPF и обеспечивают дополнительную функциональность посредством кода, поэтому вся добавленная логика и представление должны быть реализованы внутри кода.

Пользовательский элемент управления технически является обычным элементом управления содержимым, который вы можете расширить в некоторых частях кода, но обычно он расширяется путем помещения в него других элементов управления. Итак, как упомянул Кент, UserControl - это совокупность других элементов управления. Это значительно ограничивает то, что вы можете делать с пользовательским элементом управления. Его проще использовать, но он более ограничен, чем полный настраиваемый элемент управления.

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

В то время как пользовательский элемент управления предоставит логическое дерево, подобное

  • Window
    • CustomButton

UserControl предоставит логическое дерево

  • Window
    • CustomButtonUserControl
      • Button

Итак, в конечном итоге UserControl - это просто обычный ContentControl, который вы можете немного расширить и для которого вы можете предварительно определить контент. Пользовательский элемент управления обеспечивает большую гибкость за счет простоты реализации, поскольку вам нужно выполнять всю логику и взаимодействие в коде вместо того, чтобы пользоваться преимуществами XAML.

Хотя после всего этого, я не думаю, что есть такая большая разница в шаблонах Visual Studio. Скорее всего, пользовательский элемент управления Visual Studio просто создает проект с пустым пользовательским элементом управления, а проект пользовательского элемента управления - это проект с пустым пользовательским элементом управления. Позже вы можете добавить в проект любые элементы.

Обновление

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

112
ответ дан 23 November 2019 в 21:27
поделиться

A Control represents some behavior that is skinnable (templatable), whereas a UserControl is generally a higher-level aggregation of Controls that is specific to an application.

More info available here.

23
ответ дан 23 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: