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 для заполнения нулями.
На практике пользовательские элементы управления - это то, что вы реализуете на уровне кода, в то время как вы можете использовать XAML для пользовательских элементов управления. Настраиваемые элементы управления расширяют один из базовых классов элемента управления WPF и обеспечивают дополнительную функциональность посредством кода, поэтому вся добавленная логика и представление должны быть реализованы внутри кода.
Пользовательский элемент управления технически является обычным элементом управления содержимым, который вы можете расширить в некоторых частях кода, но обычно он расширяется путем помещения в него других элементов управления. Итак, как упомянул Кент, UserControl - это совокупность других элементов управления. Это значительно ограничивает то, что вы можете делать с пользовательским элементом управления. Его проще использовать, но он более ограничен, чем полный настраиваемый элемент управления.
Эти элементы управления имеют небольшое отличие с точки зрения времени выполнения. При создании приложения и размещении в нем UserControl, в дереве элементов управления будет находиться конкретный шаблон UserControl. Так что если мы рассмотрим хромой пример специализированной кнопки. Если бы вы использовали пользовательский элемент управления, вы бы добавили кнопку внутри элемента
. При использовании настраиваемого элемента управления вы, скорее всего, получите сам элемент управления от кнопки. Разница будет видна в логическом дереве.
В то время как пользовательский элемент управления предоставит логическое дерево, подобное
UserControl предоставит логическое дерево
Итак, в конечном итоге UserControl - это просто обычный ContentControl, который вы можете немного расширить и для которого вы можете предварительно определить контент. Пользовательский элемент управления обеспечивает большую гибкость за счет простоты реализации, поскольку вам нужно выполнять всю логику и взаимодействие в коде вместо того, чтобы пользоваться преимуществами XAML.
Хотя после всего этого, я не думаю, что есть такая большая разница в шаблонах Visual Studio. Скорее всего, пользовательский элемент управления Visual Studio просто создает проект с пустым пользовательским элементом управления, а проект пользовательского элемента управления - это проект с пустым пользовательским элементом управления. Позже вы можете добавить в проект любые элементы.
Обновление
И мое мнение о том, когда использовать настраиваемый элемент управления и пользовательский элемент управления, заключается в том, что если вы можете что-то сделать с помощью пользовательского элемента управления и дополнительный элемент управления в логическом дереве вас не беспокоит, используйте пользовательский элемент управления поскольку их намного проще создавать и поддерживать. Используйте пользовательский элемент управления, только если у вас есть причина не использовать пользовательский элемент управления.
A Control
represents some behavior that is skinnable (templatable), whereas a UserControl
is generally a higher-level aggregation of Control
s that is specific to an application.
More info available here.