如果值等于或大于WPF触发器将起作用

rav*_*nik 9 c# wpf triggers visual-studio-2010

我在WPF中编写了一个带有按钮和滑块的应用程序.我想为按钮创建一个触发器,当滑块值大于另一个值时,它会将按钮的'IsEnable'属性设置为false .现在我有:

<Style x:Key="zoomOutButton" TargetType="Button" BasedOn="{StaticResource ResourceKey=buttonStyle}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding CurrentAltitude}" Value="24000">
                <Setter Property="IsEnabled" Value="False" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

但我想设置isEnable时不是当CurrentAltitude的值等于24000,而是当它等于或大于24000时.有什么想法吗?

Pav*_*kov 15

您可以使用转换器实现此目的:

public class IsEqualOrGreaterThanConverter : IValueConverter {
    public static readonly IValueConverter Instance = new IsEqualOrGreaterThanConverter();

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        int intValue = (int) value;
        int compareToValue = (int) parameter;

        return intValue >= compareToValue;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你的触发器将如下所示:

<Style x:Key="zoomOutButton" TargetType="Button" BasedOn="{StaticResource ResourceKey=buttonStyle}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding CurrentAltitude, Converter={x:Static my:IsEqualOrGreaterThanConverter.Instance}, ConverterParameter=24000}" Value="True">
            <Setter Property="IsEnabled" Value="False" />
        </DataTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

  • 我很想知道这一行的目的是什么:`public static readonly IValueConverter Instance = new IsEqualOrGreaterThanConverter();` 我之前在查看转换器时没有见过它,仅此而已。 (2认同)