如何将开关切换回滑块的上一个值
本文关键字:上一个 开关 | 更新日期: 2023-09-27 18:30:02
我在切换开关和滑块上遇到问题。
滑块的值用于增加或减少媒体元素的音量。
然而,假设我将滑块的值设置为"50",并将开关切换为"关闭"我的媒体元素。
当我将开关切换回"打开"时,如何从滑块中捕获上一个值?
目前,当sw_music.IsOn 时,我将滑块的值设置为"100"
XAML:
<Slider x:Name="slider" HorizontalAlignment="Left" VerticalAlignment="Top" Width="154" Margin="45,0,0,0" Height="42" Maximum="100" Value="100"/>
<ToggleSwitch x:Name="sw_music" Header="SOUND" IsOn="{Binding Value, ElementName=slider}"/>
<MediaElement x:Name="Intro_Sound" Source="SoundEffects/Intro.wav" Volume="{Binding Value, ElementName=slider}"/>
代码背后:
private void sw_music_Toggle(object sender, RoutedEventArgs e)
{
if(slider.Value >= 1)
{
if (sw_music.IsOn)
{
slider.Value = 100;
Intro_Sound.Play();
}
else
{
slider.Value = 0;
Intro_Sound.Stop();
}
if(slider.Value > 1)
{
Intro_Sound.Play();
sw_music.IsOn = true;
}
}
}
private void Slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
Intro_Sound.Volume = (slider.Value) / 100;
if (slider.Value == 0)
{
sw_music.IsOn = false;
}
else
{
sw_music.IsOn = true;
}
}
您可以在类中定义一个字段,并在sw_music_Toggle方法中更改滑块值之前保留该值:
private int _lastSliderValue = 100;
private void sw_music_Toggle(object sender, RoutedEventArgs e)
{
if(slider.Value >= 1) // I think you don't need this
{
if (sw_music.IsOn)
{
slider.Value = _lastSliderValue;
Intro_Sound.Play();
}
else
{
_lastSliderValue = slider.Value;
slider.Value = 0;
Intro_Sound.Stop();
}
if(slider.Value > 1)
{
Intro_Sound.Play();
sw_music.IsOn = true;
}
}
}