WPF: получение значения ползунка после вмешательства пользователя - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь сделать слайдер и в зависимости от значения отображать изображение с переключателем. Однако с этим кодом c# он переходит прямо к случаю 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"/>

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете "запустить" Slider где-нибудь, установив Slider.Value в начале вашего кода. Вы можете получить доступ к Slider из своего кода, указав имя (<Slider Name="Something" ... />). Обычно визуальные элементы управляются путем объявления свойств зависимостей и затем привязки к ним. В вашем случае вы бы связались со свойством Slider.Value.

Что касается ожидания, пока пользователь не остановится, вы можете использовать ответ на этот вопрос: { ссылка } - используя Thumb.DragCompleted вместо Slider.ValueChanged.

<Slider Thumb.DragCompleted="MySlider_DragCompleted" />

Несмотря на то, что это будет ждать, пока пользователь завершит перетаскивание sh, недостатком является то, что он only работает с перетаскиванием большого пальца и не будет вызываться, если пользователь изменяет значение другим способом (например, с помощью клавиш со стрелками или щелкая где-нибудь вдоль ползунка).

Если вы использовали зависимость вместо свойства и привязки вы можете сделать что-то вроде этого:

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

Это добавляет задержку 250 мс к привязке, то есть она будет обновляться только после того, как в течение 250 мс не было никаких изменений. Он не ждет, пока пользователь разрешит go, но он ожидает, что он на мгновение прекратит перемещение ползунка перед обновлением, вместо обновления после каждого крошечного изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...