我们如何知道 UWP 滑块在值更改之前何时开始移动?

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

概述

我有一个采用 UWP 技术的项目,我在其中使用滑块控件来收集有关滑块移动的信息,我使用了

ManipulationStarting
(用于移动开始)和
ManipulationEnding
(用于移动结束)事件.

主要问题
当用户单击滑块线立即更改其值而不是滑块移动时,问题就出现了。在这种情况下,

ManipulationStarting
事件没有被调用,破坏了我的架构逻辑。

我试图解决这个问题`

  1. 在我的研究过程中,我发现这些解决方案与我的问题不匹配或不是最佳的。 (链接1链接2
  2. 我还使用了
    PointerReleased
    /
    PointerPress
    事件,但只有在
    ValueChanged
    事件
  3. 之后才会调用此事件
  4. 我创建了自定义滑块类,该类派生自 UWP 滑块并覆盖基础属性,并在值初始化之前在
    Set
    方法中调用
    ValueChanging
    事件(请参阅下面的代码)。但在使用
    Binding
    的情况下,仅使用基本属性,并且我的覆盖属性将被跳过。
    public class TestSlider : Slider
    {
        public event EventHandler ValueChanging;
        
        public new double Value
        {
            get => (this as Slider).Value;
            set 
            {
                ValueChanging?.Invoke( this, new EventArgs());
                (this as Slider).Value = value;
            }
        } }

你能帮我找到另一种方法来解决这个问题吗?

c# xaml uwp slider
1个回答
0
投票

在我看来,尝试为滑块挂钩“开始和结束”事件没有任何好处; Slider 唯一有趣的事件是“ValueChanged”事件。它可能会被遗漏,因为它是在 Slider 的基类 (RangeBase) 中定义的。

https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged?view=winrt-26100

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.