gpt4 book ai didi

c# - 将 Syncfusion SfAutoComplete 的 AutoCompleteSourceProperty 源绑定(bind)到字符串列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:12 24 4
gpt4 key购买 nike

我正在尝试使用 Synfusion 的 SfAutoComplete 控件并将其 AutoCompleteSourceProperty 属性绑定(bind)到列表(或 ObservableCollection)。

我正在使用 MVVM,我在这个 View 和我的 ViewModel 之间有其他绑定(bind),它们工作正常。

这是我的查看代码的一部分:

var searchAuto = new SfAutoComplete
{
Watermark = "Enter search terms"
};
searchAuto.SetBinding(SfAutoComplete.AutoCompleteSourceProperty, "MeshListAuto");
searchAuto.SuggestionMode = SuggestionMode.Contains;
searchAuto.AutoCompleteMode = AutoCompleteMode.Suggest;
searchAuto.MaximumDropDownHeight = 200;

这是我的 ViewModel 代码的一部分:

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);
}
}

问题是当我从 ViewModel 的构造函数之外的任何地方添加到列表时,列表上的 OnPropertyChanged 事件似乎没有触发。

所以如果我把这一行放在构造函数中:

MeshListAuto.Add("test item");

然后“测试项目”是唯一出现在 SfAutoComplete 列表中的东西,除此之外什么都没有。

我已经检查过,字符串正在被添加到我的绑定(bind)列表中,但只有添加到构造函数中的元素才会显示。

作为临时解决方案

我使用消息服务通知我的 SfAutoComplete 控件它应该绑定(bind)到的列表已经更改:

在 View 模型中:

MessagingCenter.Send<List<string>>(MeshListAuto, "list_updated");

在 View 中:

MessagingCenter.Subscribe<List<string>>(this, "list_updated", (sender) =>
{
searchAuto.AutoCompleteSource = sender;
});

但我猜这与 MVVM 实践不太兼容,对吧?

最佳答案

我们已将该要求视为功能,它将在我们计划于 2016 年 10 月推出的即将推出的第 3 卷 SP1 中提供。

关于c# - 将 Syncfusion SfAutoComplete 的 AutoCompleteSourceProperty 源绑定(bind)到字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com