Reputation:
I have three sliders and one button. The button has a click event.
What I want is when the sum of three slider values is greater than 0, than enable this button.
The code is simple, I guess:
int total = slider1.Value + slider2.Value + slider3.Value;
if total > 0
btnStart.Enable = true;
else
btnStart.Enable = false;
The question is I don't know where should I place the code. If I put it in slider events, there are three. It is duplicated.
However if we have many many sliders, is the method foolish?
Upvotes: 0
Views: 355
Reputation: 1202
Just create a ValueChanged
event and attach it on your three sliders e.g:
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
btnStart.IsEnabled = (slider1.Value > 0 && slider2.Value > 0 && slider3.Value > 0);
}
XAML would look like this:
<Slider x:Name="slider1" ValueChanged="Slider_ValueChanged"/>
<Slider x:Name="slider2" ValueChanged="Slider_ValueChanged"/>
<Slider x:Name="slider3" ValueChanged="Slider_ValueChanged"/>
Example for your button:
<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>
Upvotes: 1