微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight – 如何限制滑块的值更改事件?

我有一个滑块,价值变化强制一个相当严格的计算,所以我想要限制它,以触发实际事件,例如50ms通过,当用户完成滑动它.

虽然我学习了一些关于Rx的各种东西,不清楚我应该如何使用MVVM模式来处理这个问题.

在我目前的MVVM方法中,我将滑块值绑定到我的viewmodel.我更喜欢添加Rx油门,对现有代码的影响最小(至少为起点).

我看到一些关于MVVM和Rx的其他线程,我不认为他们导致我对我的问题的确切方向.我看到各种可能的方法,不想发明一个附件.

解决方法

在这种情况下,您应该绑定到viewmodel的PropertyChanged事件,如下所示:

Observable.FromEvent<PropertyChangedEventArgs>(x => this.PropertyChanged +=x,x => this.PropertyChanged -= x)
    .Where(x => x.PropertyName == "SliderName")
    .Select(_ => this.SliderName)
    .Throttle(TimeSpan.FromMilliseconds(50));

或者,如果您使用ReactiveUI,它将如下所示:

this.WhenAnyValue(x => x.SliderName)
    .Throttle(TimeSpan.FromMilliseconds(50),RxApp.DeferredScheduler);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐