Стиль можно определить в разметке и в коде. Обычно стиль определяется как ресурс в разметке.
Если несколько объектов Setter определено для одного свойства, используется значение, указанное последним. Значение свойства, присвоенное явно, переопределяет значение из стиля.
Стили WPF поддерживают триггеры – объекты, инициирующие изменение значений при выполнении некоторых условий, например, когда свойство получает значение true или происходит некоторое событие.
public Style Style { get; set; }
Класс EventSetter имеет конструкторы и свойства, с помощью которых в стиле можно определить пару событие-обработчик.
public Setter();
public Setter( DependencyProperty property, Object value );
public Setter( DependencyProperty property, Object value,
string targetName );
public Object Value { get; set; }
public DependencyProperty Property { get; set; }
public string TargetName { get; set; }
public EventSetter();
public EventSetter( RoutedEvent routedEvent, Delegate handler );
public RoutedEvent Event { get; set; }
public Delegate Handler { get; set; }
public bool HandledEventsToo { get; set; }
В классе Style определены конструкторы, параметры которых определяют целевой тип (тип, к которому применяется стиль) и базовый стиль (стиль, на основе которого создается новый стиль).
public Style();
public Style( Type targetType );
public Style( Type targetType, Style basedOn );
Базовый стиль и целевой тип можно определить как в конструкторах, так и с помощью свойств.
public SetterBaseCollection Setters { get; }
public TriggerCollection Triggers { get; }
public Style BasedOn { get; set; }
public Type TargetType { get; set; }
Если новый стиль определяется на основе базового стиля, то целевой тип TargetType для нового стиля должен либо совпадать с целевым типом для базового стиля, либо быть производным от него.
Этот стиль применен к элементам Button button3 и ListBox listBox1.
В примере первый стиль определен с указанием целевого типа, но без ключа. Ему неявно будет присвоен “стандартный” ключ {x:Type TextBlock} и стиль автоматически будет применен ко всем элементам TextBlock.
Второй стиль имеет и целевой тип, и ключ ("Style_Green”). Этот стиль будет применен только к тем элементам TextBlock, где он будет указан явно как значение свойства Style.
Третий стиль определен без целевого типа, поэтому в элементах Setter для свойств необходимо указать имя класса (в примере это класс Control). Этот стиль можно применить к любым элементам, производным от класса Control, при этом необходимо явно присвоить его как значение свойству Style.
Свойство TargetType класса Style определяет тип, к которому применяется данный стиль.
public Style BasedOn { get; set; }
Свойство BasedOn класса Style определяет базовый стиль. Стиль наследует все значения своего базового стиля, которые явно не переопределяются.
Первый триггер изменяет значения свойств Background и Cursor по условию, которое определяется значением true свойства IsMouseOver элемента Control (курсор мыши находится в элементе управления).
MultiTrigger изменяет значения свойств Foreground, Background и Cursor. Условие переключения определяется двумя свойствами элемента Control – IsFocused и IsMouseOver. Оба эти свойства одновременно должны иметь значение true, т.е. элемент управления имеет фокус ввода и курсор мыши находится в элементе управления.
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть