WPF:用户干预后获取滑块值

问题描述 投票:0回答:1

我想做一个滑块,根据数值的不同,显示一个带有切换情况的图像。但是用这个c#代码,它直接进入case 1。是否有可能等待用户点击和拖动,一旦停止,它就会进入我的切换情况?而且,我如何启动滑块在一个特殊的刻度,例如3?先谢谢你 这是我的c#代码。

private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        switch (Slider.Value.ToString())
        {
           case "0":
              ...
           case "1":
              ...
         }
     }

这是我的按钮规格的xaml。

<Slider HorizontalAlignment="Left" Height="29" Margin="474,375,0,0" VerticalAlignment="Top" Width="172" Minimum="0" Maximum="4" IsSnapToTickEnabled="True" TickPlacement="BottomRight" Foreground="Black" Ticks="1,2,3" ValueChanged="Slider_ValueChanged" Name="Slider"/>
c# wpf xaml
1个回答
1
投票

你可以 "开始 "的 Slider 设置 Slider.Value 在您的代码开头。您可以访问 Slider 从您的代码后缀中给它起一个名字(<Slider Name="Something" ... />). 但通常情况下,视觉元素是通过声明 依赖属性 然后 装订 给他们。在你的情况下,你会绑定到Slider.Value 属性。

至于等到用户停止了,你可以使用这个问题的答案。https:/stackoverflow.coma7235475086631。 - 使用 Thumb.DragCompleted 而不是 Slider.ValueChanged.

<Slider Thumb.DragCompleted="MySlider_DragCompleted" />

尽管这将等待用户完成拖动,但缺点是它会 只是 可用于拖动拇指,如果用户以其他方式(如使用方向键或点击滑块上的某处)更改值,则不会引起。

如果你使用一个依赖属性和一个绑定来代替,你可以做这样的事情。

<Slider Value="{Binding YourProperty, UpdateSourceTrigger=PropertyChanged, Delay=250}" ... />

这将为绑定添加250ms的延迟,这意味着只有在250ms内没有变化后才会更新。它不会等待用户放手,但会等待用户停止移动滑块片刻后再更新,而不是在每一个微小的变化后更新。

© www.soinside.com 2019 - 2024. All rights reserved.