Свойства триггера WPF



Я довольно новичок в WPF и в настоящее время работаю с triggers. У меня есть вопрос относительно простого триггера . Под простым триггером я подразумеваю тот, который следит за изменением в dependency property и использует a setter чтобы изменить стиль.



Пример:



<Style.Triggers>
<Trigger Property="Control.IsFocused" Value ="True">
<Setter Property=" Control.Foreground" Value =" DarkRed" />
</Trigger>
</Style.Triggers>


Все примеры, которые я видел, использовали следующее trigger properties:




  • <Trigger Property="Control.IsFocused" Value ="True">

  • <Trigger Property="Control.IsMouseOver" Value ="True">

  • <Trigger Property="Button.IsPressed" Value ="True">


Вопрос :
Являются этитолько триггерные свойства доступны? Если нет, то какие другие существуют?



Я искал в интернете, но безрезультатно. Может быть, кто-нибудь прольет на это свет.

595   3  

3 ответов:

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

На самом деле, вы можете иметь свой Trigger смотреть любой DependencyProperty, но поскольку он "срабатывает", когда значение изменяется (и соответствует Value, которое вы говорите ему смотреть), имеет смысл использовать только свойства, которые будут меняться во время выполнения, часто от действий пользователя (таких как фокус, наведение мыши, нажатие и т. д.). Только определенные DependencyProperties фактические изменение значения в этих условиях, поэтому не все из них имеет смысл использовать в Triggers.

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

Имейте в виду, PropertyTriggers - это только один аромат Trigger в WPF. Есть также EventTriggers и DataTriggers и MultiTriggers. Эти другие триггеры срабатывают на основе события или изменения в данных, или в случае MultiTriggers нескольких значений свойств (или данных).

Есть ли что-то конкретное, что вы пытаетесь сделать с Triggers? Этот другой ответ дает хорошее объяснение того, что делает каждый тип триггера.

Существует несколько типов триггеров в WPF, но два наиболее часто используемых являются регулярными Triggers и DataTriggers

Оба типа триггеров будут следить за значением, и когда оно изменяется, чтобы соответствовать указанному Value, то они применяют ваши задатчики стиля.

Регулярные триггеры могут использоваться для любого свойства зависимости объекта. Это включает в себя такие свойства, как Text, Visibility, Background, и т.д. В дополнение к более часто запускаемым свойствам, которые вы указали: IsFocused, IsMouseOver, и еще IsPressed.

Обратите внимание, что на странице MSDN о триггере.Свойство , вам не нужно указывать префикс имени класса, если стиль или шаблон, содержащий триггер, имеет набор свойств TargetType

Простой способ запомнить это-если вы можете привязать свойство, вы можете установить на него триггер.

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

Например, вы можете установить DataTrigger на "{Binding Value}" или "{Binding ElementName=MyTextBox, Path=IsChecked}". Вы даже можете использовать Converters с Дататриггерами, такими как

<DataTrigger
    Binding="{Binding SomeInt, Converter={StaticResource IsGreaterThanZero}}"
    Value="True">

Используйте этот код для лучшего взаимодействия с триггером в wpf.

<Window x:Class="DataBinding.Trigger2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Trigger2" Height="500" Width="500">
<Window.Resources>
    <Style TargetType="Button">
        <Style.Setters>
            <Setter Property="FontFamily" Value="Tahoma"></Setter>
            <Setter Property="FontSize" Value="15"></Setter>
            <Setter Property="FontWeight" Value="Bold"></Setter>
            <Setter Property="Height" Value="25"></Setter>
            <Setter Property="Width" Value="100"></Setter>

        </Style.Setters>
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="True">
                <Setter Property="Background" Value="Purple"></Setter>
                <Setter Property="Foreground" Value="DarkCyan"></Setter>
                <Setter Property="FontFamily" Value="Franklin Gothic"></Setter>
                <Setter Property="FontSize" Value="10"></Setter>
                <Setter Property="FontWeight" Value="Normal"></Setter>
                <Setter Property="Height" Value="50"></Setter>
                <Setter Property="Width" Value="200"></Setter>
            </Trigger>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Red"></Setter>
                <Setter Property="Foreground" Value="White"></Setter>
                <Setter Property="FontFamily" Value="Calibri"></Setter>
                <Setter Property="FontSize" Value="25"></Setter>
                <Setter Property="FontWeight" Value="Heavy"></Setter>
                <Setter Property="Height" Value="100"></Setter>
                <Setter Property="Width" Value="400"></Setter>
            </Trigger>
            <Trigger Property="IsPressed" Value="True">
                <Setter Property="Background" Value="Green"></Setter>
                <Setter Property="Foreground" Value="Violet"></Setter>
                <Setter Property="FontFamily" Value="Times New Roman"></Setter>
                <Setter Property="FontSize" Value="20"></Setter>
                <Setter Property="FontWeight" Value="Thin"></Setter>
                <Setter Property="Height" Value="250"></Setter>
                <Setter Property="Width" Value="250"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Button>It's a Magic.</Button>

Comments

    Ничего не найдено.