7

MSDN でDataTriggerについて読んでいるときに、それは言う

バインドされたデータが指定された条件を満たしたときに、プロパティ値を適用するかアクションを実行するトリガーを表します。

その意味は

トリガーが真の場合、値を目的の値に変更します。

しかし、これは推測できますか?

true でなくなると、値を以前の値に戻します。


この結論に至った経緯

これは私がしました

<Style x:Key="fd" TargetType="SomeControl">
 <Setter Property="Control.Template">
  <Setter.Value>
   <ControlTemplate>
    <Button Content="Foo" x:Name="mybutton">
    <ControlTemplate.Triggers>
     <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=FooProperty}" 
                  Value="Collapsed">
      <Setter Property="IsEnabled" Value="False" TargetName="mybutton"/>
      <Setter Property="Opacity" Value="0.5" TargetName="mybutton"/>
     </DataTrigger>
    </ControlTemplate.Triggers>
   </ControlTemplate>
  </Setter.Value>
 </Setter>
</Style>

FooProperty折りたたまれると、mybutton がtoIsEnabledFalsetoOpacityに変わります0.5

表示されるようになると、以前の値に戻すためのトリガーを記述していなくても、FooPropertymybutton がIsEnabledtoTrueOpacitytoに変更されます。1

DataTriggerこれは、以前の値に戻すための組み込みの機能ですか?

はいの場合、これを証明する Microsoft/MSDN ドキュメントはありますか?

4

1 に答える 1

6

あなたが言っていることは正しいです。

これを証明する実際のドキュメントについては、ここから検索してください。

http://msdn.microsoft.com/en-us/library/ms745683.aspx

http://msdn.microsoft.com/en-us/library/system.windows.trigger.aspx

「備考欄」

WPFは、エンドユーザーのアクションに対応するプロパティを定義します。たとえば、ユーザーがUIElementまたはContentElementの対応するIsMouseOverプロパティにカーソルを合わせるとtrueに設定されるIsMouseOverプロパティなどです。Trigger要素とともにプロパティ値でエンドユーザーアクションを表すと、WPFスタイルは、すべてマークアップ内から、それらのエンドユーザーアクションに基づいてプロパティ値を変更できます。

トリガーによって変更されたプロパティは、トリガーされた条件が満たされない場合、自動的に以前の値にリセットされます。トリガーは、ボタンのIsPressedやListBoxItemのIsSelectedなど、変更されて元の状態に戻ることが予想される一時的な状態に最適化されています。対象のプロパティは依存関係プロパティである必要があります。

トリガーを意味のあるものにするには、トリガーのプロパティプロパティと値プロパティの両方を指定する必要があることに注意してください。プロパティの一方または両方が設定されていない場合、例外がスローされます。

幸運を :)

于 2012-09-19T07:14:54.617 に答える