【发布时间】:2017-01-23 21:48:01
【问题描述】:
有没有一种有效的方法来确定 Xamarin.Forms.ValueChangedEventArgs 事件是由用户输入还是由程序更新引发的?
我在 XAML 中创建了一个滑块,我需要确保事件处理程序中的代码仅在滑块的值被用户更改时才执行,如果值以编程方式更改则不执行任何操作。
基本上,我正在寻找与 Xamarin.Android 中的 SeekBar.ProgressChangedEventArgs.FromUser 属性等效的 Xamarin.Forms。
有什么想法吗?谢谢!
【问题讨论】:
-
程序启动时是否在任何地方初始化值?也许这就是引发事件的原因。您可以在事件处理程序中放置一个断点,然后检查调用堆栈以查看更改的来源。
-
@ChrisDunaway 我有意在不同点以编程方式更改滑块的值,但我希望事件处理程序忽略这些。事件处理程序仅应在用户通过手动滑动更改滑块时做出响应。
-
我知道的唯一方法是在您以编程方式更改它们之前设置一个布尔值,然后检查事件处理程序中的布尔值。
-
我想过这个问题,但我不确定在这种情况下它对我的效果如何,因为滑块实际上是我正在构建的音频播放器的进度条。它的值每秒以编程方式更新,但用户仍然需要能够移动滑块以寻找音频的不同部分。
-
您使用 ValueChangedEventArgs 的事实告诉我您没有进行正确的数据绑定,这就是您首先遇到此问题的原因。即使您没有使用正确的 MVVM,您仍然可以将您的视图对象绑定到类似视图模型的数据结构中的字段,此时您可以确切地知道您是否手动更改了它。
标签: c# event-handling xamarin.forms