【发布时间】:2015-09-04 12:54:33
【问题描述】:
我正在尝试理解下面尝试使用响应式扩展的代码
IObservable<string> textChangedObservable =
Observable.FromEventPattern<TextChangedEventArgs>(searchScrip, "TextChanged")
.Select(evt => ((TextBox) sender).Text);
textChangedObservable.Subscribe(OnNext, OnCompleted);
private void OnNext(string s)
{
System.Diagnostics.Debug.Print("OnNext " + s + "\n");
}
private void OnCompleted()
{
System.Diagnostics.Debug.Print("OnCompleted " + "\n");
}
如果我在输入框中输入 SEARC,输出看起来像
- OnNext SE
- OnNext 东南亚
- OnNext 东南亚
- OnNext SEAR
- OnNext SEAR
- OnNext SEAR
- OnNext SEARC
- OnNext SEARC
- OnNext SEARC
-
OnNext SEARC
- 为什么“S”没有触发 OnNext?
- 为什么从不调用 OnCompleted?
- 为什么 OnNext 在第 n 个字符被调用 n-1 次?
【问题讨论】:
-
这不是一个简单的问题,因为
XamTextEditor类并非轻松可用。我怀疑这可能与它的RoutedPropertyChanged的实现有关 -
其实你需要告诉我们
searchScrip和sender是什么XAML元素。 -
将代码示例更改为使用 wpf 文本框以保持简单。但是行为仍然与问题中的相同
标签: c# .net system.reactive