如何使用ObservableCollection绑定到自动完成选择项

时间:2019-02-13 19:08:12

标签: c# xamarin mvvm xamarin.forms syncfusion

我目前正在通过syncfusion实现自动完成框。当前选择模式设置为def data_set(data): df = pd.DataFrame(data) df['zip'] = get_zip() df['region'] = get_region() newdf = df.filter(['name', 'phone', 'location', 'zip', 'region', 'coordinates', 'rating', 'review_count', 'categories', 'url'], axis=1) if not os.path.isfile('yelp_data.csv'): newdf.to_csv('data.csv', header='column_names') else: # else it exists so append without writing the header newdf.to_csv('data.csv', mode='a', header=False)

Token

我目前正在使用MVVM方法,如何在不使用对象基础类型的情况下绑定到SelectedLocation。

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

我目前的工作原理

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); } } ,所以不再选择SelectedLocation。我可以得到一些技巧或建议来正确绑定选定项的集合。

我尝试的无效的方法

ObservableCollection<SearchItem>

1 个答案:

答案 0 :(得分:1)

在经过OP澄清后进行了编辑:

看起来您必须使用ObservableCollection<object>使其起作用。然后,如果您想访问单个SearchItem对象,则需要一种机制来调用另一个方法或属性设置器,并将其中的项目转换为该机制。

public ObservableCollection<object> SelectedLocation
{
    get { return _selectedLocation; }
    set
    {
        SetProperty(ref _selectedLocation, value);
    }
}

有关如何使用ObservableCollection<object>然后将结果强制转换为字符串(或在您的情况下为SearchItem)的完整示例,请查看此知识库文章:How to get SelectedText from AutoComplete 。它不是您的用例的1:1,但应该足以继续进行。