我有三个滑块和一个按钮。该按钮有一个点击事件。
我想要的是当三个滑块值之和大于0时,启用此按钮。
代码很简单,我想:
int total = slider1.Value + slider2.Value + slider3.Value;
if total > 0
btnStart.Enable = true;
else
btnStart.Enable = false;
问题是我不知道我应该在哪里放置代码。如果我把它放在滑块事件中,有三个。这是重复的。
然而,如果我们有很多滑块,这种方法是愚蠢的吗?
答案 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>