我想使用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 ... –