9

私はWPFにかなり慣れていないので、現在triggers. 単純なトリガーについて質問があります。単純なトリガーとは、 a の変化を監視し、 adependency propertyを使用し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">

質問:使用できるトリガー プロパティはこれらだけですか? そうでない場合、他にどのようなものが存在しますか?

私はオンラインで検索しましたが、役に立ちませんでした。誰かがこれに光を当てることができるかもしれません。

4

3 に答える 3

16

これらは、 で使用できる唯一のプロパティではありませんが、Triggers理解しやすく、実証しやすいため、一般的な例です。

実際には、Triggerウォッチを anyDependencyPropertyにすることができますが、値が変更されたとき (そして、監視するように指示したものと一致したとき) に「トリガー」されるValueため、多くの場合、ユーザー アクションから、実行時に変更されるプロパティを使用することだけが理にかなっています。 (フォーカス、マウスオーバー、プレスなど)。DependencyPropertiesこれらの状況では特定の実際の変更値のみであるため、それらすべてを で使用する意味があるわけではありませんTriggers

Microsoft はDependencyProperties、変更に基づいてトリガーを簡単に作成できるように、標準コントロールにいくつかを追加しました。ただし、独自のコントロールを作成してDependencyProperties、カスタムの変更時に応答するトリガーを設定することもできますDependencyProperties

WPFPropertyTriggersのフレーバーは 1 つにすぎないことに注意してください。ととTriggerもあります。これらの他のトリガーは、イベントまたはデータの変更に基づいて、または複数のプロパティ (またはデータ) 値の場合に起動します。EventTriggersDataTriggersMultiTriggersMultiTriggers

あなたがやろうとしている特定の何かがありますTriggersか? この他の回答は、各タイプのトリガーが何をするかについての良い説明を提供します。

于 2013-03-01T15:22:20.817 に答える
8

WPF には複数の種類のトリガーがありますが、最も一般的に使用される 2 つは通常のトリガーTriggersDataTriggers

どちらのタイプのトリガーも値を監視し、指定された値に一致するように変化するとValue、スタイル セッターが適用されます。

通常のトリガーは、オブジェクトの依存関係プロパティに使用できます。これには、指定したより一般的にトリガーされるプロパティに加えて、、、などのプロパティTextが含まれます: 、および。VisibilityBackgroundIsFocusedIsMouseOverIsPressed

Trigger.Property に関する MSDN ページに従って、トリガーを含む Style または Template にTargetTypeプロパティが設定されている場合、クラス名のプレフィックスを指定する必要はありません。

これを覚える簡単な方法は、プロパティをバインドできれば、それにトリガーを設定できるということです。

DataTriggersは、依存関係プロパティではなく、バインドされた値を監視するトリガーです。これらを使用すると、バインドされた式を監視でき、そのバインドが値と等しいと評価されたときに反応します。

たとえば、DataTriggeron"{Binding Value}"またはを設定できます"{Binding ElementName=MyTextBox, Path=IsChecked}"Converters次のような DataTriggersでも使用できます。

<DataTrigger
    Binding="{Binding SomeInt, Converter={StaticResource IsGreaterThanZero}}"
    Value="True">
于 2013-03-01T15:21:47.833 に答える
1

このコードを使用して、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>

于 2014-05-14T05:40:22.770 に答える