我想使用Synfusion的SfAutoComplete控制,并将其绑定的AutoCompleteSourceProperty属性列表(或的ObservableCollection)的。绑定Syncfusion SfAutoComplete的AutoCompleteSourceProperty源列出串
我正在使用MVVM,并且在此视图和ViewModel之间还有其他Bindings可以正常工作。
这里是我的查看部分代码:
var searchAuto = new SfAutoComplete
{
Watermark = "Enter search terms"
};
searchAuto.SetBinding(SfAutoComplete.AutoCompleteSourceProperty, "MeshListAuto");
searchAuto.SuggestionMode = SuggestionMode.Contains;
searchAuto.AutoCompleteMode = AutoCompleteMode.Suggest;
searchAuto.MaximumDropDownHeight = 200;
这里是我的视图模型部分代码:
List<string> _meshListAuto;
public List<string> MeshListAuto
{
get { return _meshListAuto; }
set
{
_meshListAuto = value;
OnPropertyChanged();
}
}
(我已经尝试了上面的的ObservableCollection以及...)
foreach (var termSet in test.TranslationStack.TermSet)
{
if (termSet.Field == "MeSH Terms")
{
MeshListAuto.Add(termSet.Term);
Debug.WriteLine(MeshListAuto.Count);
}
}
问题是,List中的OnPropertyChanged事件在我从ViewModel的构造函数以外的任何位置添加到List时似乎没有触发。
所以,如果我把这个线在构造:
MeshListAuto.Add("test item");
然后“测试项目”是出现在SfAutoComplete列表中的唯一的事情,但没有别的。
我检查了字符串是被添加到我的绑定列表中,但只有在构造函数中添加的元素才显示出来。
作为
我用短信服务通知我SfAutoComplete控件,它应该要绑定的列表已更改一个临时解决方案:
在视图模型:
MessagingCenter.Send<List<string>>(MeshListAuto, "list_updated");
在视图中:
MessagingCenter.Subscribe<List<string>>(this, "list_updated", (sender) =>
{
searchAuto.AutoCompleteSource = sender;
});
但我想这与MVVM的做法不太一致,对吧?
@ 1-赞月份将推出即将推出的第3卷SP1可用,这似乎是一个问题关于这些项目是如何刷新的,以及这个控件是否支持它,无论如何你需要一个可观察的集合。 –
@JesusAngulo,是的,你是对的,但它似乎像这个控件不喜欢ObservableCollections ... –