WPF - Какой из них лучше? Стиль или пользовательский контроль? - PullRequest
4 голосов
/ 29 апреля 2010

Я хотел знать, какой из Style и UserControl будет лучше использовать в WPF?

Например: Я создал кнопку изображения двумя разными способами. Используется свойство Style и ContentTemplate. Он использует еще один класс со свойствами зависимости.

Другой способ - я создал UserControl, в котором есть кнопка и задано ее свойство content. Файл UserControl.xaml.cs также содержит свойства зависимостей.

Подробнее о коде см. Ответы на этот вопрос:

Пользовательский шаблон кнопки в WPF

Какой из них лучше использовать? В каком сценарии следует выбрать Style или UserControl или любой CustomControl?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Стили ограничены настройкой свойств по умолчанию для элементов XAML. Например, когда я устанавливаю BorderBrush, я могу указать кисть, но не ширину границы. Для полной свободы внешнего вида элемента управления используйте шаблоны. Для этого создайте стиль и укажите свойство Template.

Стили и шаблоны все еще позволяют изменять внешний вид элемента управления. Чтобы добавить поведение и другие функции, вам нужно создать пользовательский элемент управления.

Например, Для создания кнопки, подобной кнопке воспроизведения, используйте стили и шаблоны, а для создания кнопки воспроизведения, которая изменит свой внешний вид после приостановки, используйте UserControl.

0 голосов
/ 29 апреля 2010

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

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

Это позволяет вам изменять стиль вашего приложения, не пересматривая код, и действительно означает, что вы можете изменять стили на лету во время выполнения.

Существует неуклюжая строка, касающаяся того, сколько поведения размещено в XAML и сколько помещено в коде. Грубым руководством было бы решить, какое поведение всегда должно присутствовать в пользовательском интерфейсе, и поместить его в код, а все остальное поместить в XAML.

Думайте о коде как о абстрактном классе с определенными интерфейсами, а о стилях XAML как о классах, основанных на этом классе, и вы поймете, что я имею в виду.

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

Если подумать так, вы увидите, что на самом деле никогда не бывает правильного или неправильного ответа, просто лучшие решения, подходящие для ваших навыков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...