WPF在属性值大于某个量时触发

时间:2009-07-07 19:43:03

标签: wpf triggers

我想做这样的事情:

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

无论如何做这样的事情?

5 个答案:

答案 0 :(得分:33)

您可以使用数据触发器并将绑定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>

Reference

答案 1 :(得分:20)

您需要自定义转换器。看看article

答案 2 :(得分:5)

不是没有代码。通常的做法是:

  • 使用UI元素时,创建一个IValueConverter并使用转换器绑定到该属性。
  • 使用绑定数据时,请在数据上创建bool属性并从该属性触发。

答案 3 :(得分:2)

SP1中可能添加了一些东西,但我过去实现这一点的方法是使用ValueConvertor将值转换为布尔值。

在您的示例中,如果值为&gt;,则转换器将返回true。 25,否则为假。如果这没有意义,我可以举一个例子: - )

答案 4 :(得分:0)

数据触发器仅验证准确值,不验证“评估值”(例如大于,小于,加法等)。您需要一个转换器才能转换为精确值。