web-dev-qa-db-ja.com

プロパティ値が特定の量より大きい場合にWPFトリガー

私はこのようなことをしたいです:

<ControlTemplate.Triggers>
    <Trigger Property="Width" Value=">25">
       <!-- Set values here -->
    </Trigger>
</ControlTemplate.Triggers>

とにかくこのようなことをするのですか?

26
Micah

カスタムコンバーターが必要です。 記事 を見てください

20

データトリガーを使用して、バインディングRelativeSourceをSelfに設定できます。データトリガーはバインディングを可能にし、バインディングはコンバーターを可能にします。

例:

   <Button Content="I change colour depending on my width for some reason">
        <Button.Triggers>
            <DataTrigger
                Binding="{Binding
                Path=Width,
                RelativeSource={RelativeSource Self},
                Converter={StaticResource isLessThanConverter},
                ConverterParameter=50}"
                Value="True">
                <Setter Property="Button.Background" Value="Red" />
            DataTrigger>
        Button.Triggers>
    Button>

参考

33
Daniel

背後にあるコードなしではありません。通常の練習は:

  • UI要素を操作するときは、IValueConverterを作成し、コンバーターを使用してプロパティにバインドします。
  • バインドされたデータを操作する場合、データにブールプロパティを作成し、そのプロパティからトリガーします。
5

SP1で何かが追加された可能性がありますが、これを過去に達成した方法は、値をブール値に変換するValueConvertorを使用することです。

あなたの例では、値が25より大きい場合、コンバーターはtrueを返し、それ以外の場合はfalseを返します。それが意味をなさない場合は、例をあげることができます:-)

2
Steven Robbins

Data Triggerは正確な値のみを検証し、「評価された値」(より大きい、より小さい、加算など)は検証しません。正確な値に変換するにはコンバータが必要です。

0
Bhauraj Biradar