Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVXAutoCompleteTextView在PatialText上失去绑定_C#_Android_Mono_Mvvmcross - Fatal编程技术网

C# MVXAutoCompleteTextView在PatialText上失去绑定

C# MVXAutoCompleteTextView在PatialText上失去绑定,c#,android,mono,mvvmcross,C#,Android,Mono,Mvvmcross,我使用的是MVXAutoCompletTextView,我已经确认ItemsSource和SelectedObject已正确绑定,并且正在工作。我添加了一些代码,当小部件获得焦点时,它将执行ShowDropDown,并确保预期的项目在那里 当我开始键入以筛选列表时,问题就出现了。在第一步中,ItemsSource被正确过滤。但我注意到,有时它只根据一些键入的字符进行过滤。有时是第一个字符,有时是第二个字符。基本上是一件碰运气的事。下面是一个示例堆栈跟踪 01-09 13:33:37.145 D/

我使用的是MVXAutoCompletTextView,我已经确认ItemsSource和SelectedObject已正确绑定,并且正在工作。我添加了一些代码,当小部件获得焦点时,它将执行ShowDropDown,并确保预期的项目在那里

当我开始键入以筛选列表时,问题就出现了。在第一步中,ItemsSource被正确过滤。但我注意到,有时它只根据一些键入的字符进行过滤。有时是第一个字符,有时是第二个字符。基本上是一件碰运气的事。下面是一个示例堆栈跟踪

01-09 13:33:37.145 D/AblistView 3098:onDetachedFromWindow [0:] 01-09 13:33:37.185D/AblistView 3098:获取运动识别管理器 mvx:诊断:116.54等待交流起动 01-09 13:33:37.395 I/mono标准输出3098:mvx:诊断:116.54等待空调启动 [0:]mvx:诊断:116.54等待ac启动 [0:] mvx:诊断:116.82等待完成,共772项ac [0:]mvx:Diagnostic:116.82等待已完成,共有772项用于ac 01-09 13:33:37.745 I/mono标准输出3098:mvx:Diagnostic:116.82等待完成,共772项用于ac [0:] mvx:诊断:117.03等待交流起动 [0:]mvx:诊断:117.03等待空调起动 01-09 13:33:37.805 I/mono标准输出3098:mvx:诊断:117.03等待交流起动 01-09 13:33:38.025 D/AblistView 3098:onDetachedFromWindow 01-09 13:33:38.095 D/AblistView 3098:获取运动识别管理器

当我键入acc时,您可能会注意到“等待ac启动”

我还注意到,当它第一次过滤时,您添加了额外的文本以进一步过滤列表,绑定到PartialText的属性的setter就永远不会被调用。退格时也会发生同样的情况

以下是绑定到PartialText的属性:

私有字符串_searchTerm; 公共字符串搜索项 { 获取{return\u searchTerm;} 设置 { _搜索项=值; RaisePropertyChanged=>SearchTerm; 滤器 } }

我做错了什么?我错过什么了吗

我希望我能解释清楚。提前谢谢

干杯


Jaime

是否因为链接器的原因而没有设置绑定?在这种情况下,您可以将其添加到LinkerPleaseInclude.cs文件中,如下所示:

public void Include(MvxAutoCompleteTextView text)
        {
            text.TextChanged += (sender, args) => text.Text = "" + text.Text;
            text.PartialTextChanged += (sender, args) => text.Text = "" + text.Text;
            text.SelectedObjectChanged += (sender, args) => text.Text = "" + text.Text;
        }

可能是因为链接器的原因而没有设置绑定吗?在这种情况下,您可以将其添加到LinkerPleaseInclude.cs文件中,如下所示:

public void Include(MvxAutoCompleteTextView text)
        {
            text.TextChanged += (sender, args) => text.Text = "" + text.Text;
            text.PartialTextChanged += (sender, args) => text.Text = "" + text.Text;
            text.SelectedObjectChanged += (sender, args) => text.Text = "" + text.Text;
        }

Android的AutoCompleteTextView是一个真正的PITA。您看到绑定到PartialText的属性的setter从未被调用的可能原因。是因为控件仍在等待ItemsSource根据以前的更改进行更新

我有同样的问题,在这里回答。基本上,对PartialText的每次更改都必须导致对ItemsSource的更改

当您看到您的PartialText的mvx:Diagnostic:Wait开始,但没有匹配的mvx:Diagnostic:116.82 Wait finished时,您将知道它已停止工作

WRT您的搜索有时会出现一个字符,我建议将Debug.WriteLine添加到SearchTerm的setter中,并在搜索调用过滤器周围添加Debug.WriteLine。在某个地方,您将在错误的时间更新和响应SearchTerm更改

p、 您可能已经在这样做了,但为了以防万一,不要使用VS Output窗口来查看调试输出。使用Android设备日志窗口并通过标准输出进行过滤


Pat

Android的AutoCompleteTextView是一个真正的PITA。您看到绑定到PartialText的属性的setter从未被调用的可能原因。是因为控件仍在等待ItemsSource根据以前的更改进行更新

我有同样的问题,在这里回答。基本上,对PartialText的每次更改都必须导致对ItemsSource的更改

当您看到您的PartialText的mvx:Diagnostic:Wait开始,但没有匹配的mvx:Diagnostic:116.82 Wait finished时,您将知道它已停止工作

WRT您的搜索有时会出现一个字符,我建议将Debug.WriteLine添加到SearchTerm的setter中,并在搜索调用过滤器周围添加Debug.WriteLine。在某个地方,您将在错误的时间更新和响应SearchTerm更改

p、 您可能已经在这样做了,但为了以防万一,不要使用VS Output窗口来查看调试输出。使用Android设备日志窗口并通过标准输出进行过滤


帕特

非常感谢帕特!正是你相关的回答为我指明了正确的方向。文本更改后,我不得不在适配器上调用NotifyDataSetChanged。很高兴您修复了它。当您更新ItemsSourceAnks时,应该会调用NotifyDataSetChanged!正是你相关的回答为我指明了正确的方向。我不得不打电话给adapt上的NotifyDataSetChanged
呃,文本更改后。很高兴您将其修复。更新ItemsSource时应调用NotifyDataSetChanged