c# - 如何使用 ObservableCollection 绑定到自动完成选定项
问题描述
我目前正在从 syncfusion 实现自动完成框。当前选择模式设置为Token
<autocomplete:SfAutoComplete x:Name="autoComplete"
DisplayMemberPath="Location"
MultiSelectMode="Token"
HeightRequest="120"
HorizontalOptions="FillAndExpand"
TokensWrapMode="Wrap"
SelectedItem="{Binding SelectedLocation}"
DataSource="{Binding FilteredLocations}"
Text="{Binding SearchLocation, Mode=TwoWay}" >
</autocomplete:SfAutoComplete>
我目前正在使用 MVVM 方法,如何在不使用对象基类型的情况下绑定到 SelectedLocation。
private ObservableCollection<SearchItem> _filteredLocations;
public ObservableCollection<SearchItem> FilteredLocations
{
get { return _filteredLocations; }
set { SetProperty(ref _filteredLocations, value); }
}
我现在的作品
public object SelectedLocation
{
get { return _selectedLocation; }
set
{
SetProperty(ref _selectedLocation, value);
}
}
但我不希望类型为对象,而我将其更改为ObservableCollection<SearchItem>
, SelectedLocation 不再被拾取。当它是一个集合时,我是否可以获得正确绑定到选定项目的提示或建议。
我试过的没有用
public ObservableCollection<SearchItem> SelectedLocation
{
get { return _selectedLocation; }
set
{
SetProperty(ref _selectedLocation, value);
}
}
解决方案
在OP澄清后编辑:
看来您必须使用ObservableCollection<object>
. 如果您随后想要访问各个 SearchItem 对象,您将需要一种机制来调用另一个方法或属性设置器并将项目转换到那里。
public ObservableCollection<object> SelectedLocation
{
get { return _selectedLocation; }
set
{
SetProperty(ref _selectedLocation, value);
}
}
有关如何使用ObservableCollection<object>
然后将结果转换为字符串(或在您的情况下转换为SearchItem
)的完整示例,请查看此知识库文章:如何从 AutoComplete 获取 SelectedText。这不是您的用例的 1:1,但应该足以继续。
推荐阅读
- javascript - 如何在这个简单的代码中从导航反应 4 升级到导航 5
- javascript - 只能设置一次 style.marginLeft 吗?
- python - Python ModuleNotFoundError - x86cpu
- html - 如何使 div 改变方向到 RTL?
- docker - Dockerfile 副本在 elasticbeanstalk 中不起作用
- android - 无法在flutter中反序列化json数据
- python - 在新环境中安装 matplotlib 和 nb_conda 时出现 Anaconda 错误
- mysql - 来自索引控制器的搜索模型中的预过滤器
- flutter - 打开抽屉菜单时重建脚手架的主体
- r - 在 R 中使用 igraph 生长决策树