启用滑块值上的按钮

时间:2014-11-04 14:41:47

标签: wpf

我有三个滑块和一个按钮。该按钮有一个点击事件。

我想要的是当三个滑块值之和大于0时,启用此按钮。

代码很简单,我想:

int total = slider1.Value + slider2.Value + slider3.Value;
if total > 0
   btnStart.Enable = true;
else
   btnStart.Enable = false;

问题是我不知道我应该在哪里放置代码。如果我把它放在滑块事件中,有三个。这是重复的。

然而,如果我们有很多滑块,这种方法是愚蠢的吗?

1 个答案:

答案 0 :(得分:1)

只需创建一个ValueChanged事件并将其附加到三个滑块上,例如:

private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
   btnStart.IsEnabled = (slider1.Value > 0 && slider2.Value > 0 && slider3.Value > 0);
}

XAML看起来像这样:

<Slider x:Name="slider1" ValueChanged="Slider_ValueChanged"/>
<Slider x:Name="slider2" ValueChanged="Slider_ValueChanged"/>
<Slider x:Name="slider3" ValueChanged="Slider_ValueChanged"/>

按钮示例:

<Button x:Name="btnStart" IsEnabled="False">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="IsHitTestVisible" Value="True"/>
            <Setter Property="Background" Value="Red"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                            <ContentPresenter Content="{TemplateBinding Content}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="IsHitTestVisible" Value="False"/>
                    <Setter Property="Background" Value="Green"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>