在我之前的文章中,它有助于确定如何绑定到所选项目,How to bind to autocomplete selecteditem with ObservableCollection,但现在我正在尝试增强这种逻辑。
我正在尝试初始化View时预先选择项目。我尝试了多个选项,但是似乎无法预先选择项目。请给我一些帮助。我当前的代码如下
关键字类别
public class Keyword : ObservableObject
{
private string _value;
public string Value
{
get { return _value; }
set { SetProperty(ref _value, value); }
}
}
ViewModel
private ObservableCollection<object> _selectedKeywords = new ObservableCollection<object>();
private ObservableCollection<Keyword> _keywords = new ObservableCollection<Keyword>();
public TestViewModel()
{
Keywords = new ObservableCollection<Keyword>()
{
new Keyword { Value = "Apples" },
new Keyword { Value = "Bananas" },
new Keyword { Value = "Celery" }
};
SelectedKeywords = new ObservableCollection<object>(Keywords.Where(x => x.Value == "Apples"));
}
public ObservableCollection<object> SelectedKeywords
{
get { return _selectedKeywords; }
set { SetProperty(ref _selectedKeywords, value); }
}
public ObservableCollection<Keyword> Keywords
{
get { return _keywords; }
set { SetProperty(ref _keywords, value); }
}
查看
<autocomplete:SfAutoComplete MultiSelectMode="Token"
HorizontalOptions="FillAndExpand"
VerticalOptions="EndAndExpand"
TokensWrapMode="Wrap"
Text="{Binding Keyword, Mode=TwoWay }"
IsSelectedItemsVisibleInDropDown="false"
Watermark="Add..."
HeightRequest="120"
SelectedItem="{Binding SelectedKeywords}"
DataSource="{Binding Keywords}">
</autocomplete:SfAutoComplete>
答案 0 :(得分:1)
要使其在View模型中预先选择,请为您在View上绑定的绑定设置一个值,基本上是为SelectedKeywords
分配一个值
类似的东西:
SelectedKeywords = Keywords.FirstOrDefault();
您可能不确定需要双向绑定,因为从未使用过此控件:
SelectedItem="{Binding SelectedKeywords, Mode=TwoWay}"
答案 1 :(得分:1)
我们已经从您的代码片段中准备了示例,但您错过了在代码片段中添加 DisplayMemberPath 属性的操作。请从下面的位置找到示例。
http://www.syncfusion.com/downloads/support/directtrac/general/ze/AutoCompleteSample-270923957.zip
注意:我为Syncfusion工作。
此致
Dhanasekar