如何预填充Autocomplete SelectedItem

时间:2019-02-15 20:21:54

标签: xaml xamarin syncfusion

在我之前的文章中,它有助于确定如何绑定到所选项目,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>

2 个答案:

答案 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