微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Forms Syncfusion-异步数据绑定不适用于SfCombobox

如何解决Xamarin Forms Syncfusion-异步数据绑定不适用于SfCombobox

当数据来自异步调用(我的api)时,我在将集合绑定到SfComboBox时遇到问题。当然,所有这些都可以在本地列表中正常工作。

我已经检查了来自api的数据,并且与viewmodel属性的绑定都正常工作。

这里是XAML示例:

  <border:SfBorder
                        Grid.Row="4"
                        BorderColor="{Binding Source={x:Reference CategoryCombo},Path=IsFocused,Converter={StaticResource ColorConverter},ConverterParameter=0}"
                        Style="{StaticResource SfBorderStyle}">
                        <comboBox:SfComboBox
                            AllowFiltering="True"
                         x:Name="CategoryCombo"
                         Style="{StaticResource ComboBoxStyle}"
                         DataSource="{Binding Categories}" displayMemberPath="Name" SelectedValuePath="Id"
                             SelectedItem="{Binding SelectedCategory,Mode=TwoWay}"/>
                    </border:SfBorder>

和全视图模型

 [Preserve(AllMembers = true)]
    [DataContract]
    public class SearchPageviewmodel: Baseviewmodel
    {
        private ObservableCollection<Category> categories;
        private readonly ICategoryQueriesServices categoryQueriesServices;

        public ObservableCollection<Category> Categories
        {
            get { return this.categories; }
            set
            {
                if (this.categories == value)
                {
                    return;
                }

                this.categories = value;
                this.NotifyPropertyChanged();
            }
        }

        private Category selectedCategory;

        public Category SelectedCategory
        {
            get
            {
                return selectedCategory;
            }

            set
            {
                if (selectedCategory != value)
                {
                    selectedCategory = value;
                    this.NotifyPropertyChanged();
                }
            }
        }


        public SearchPageviewmodel(ICategoryQueriesServices categoryQueriesServices)
        {
            this.categoryQueriesServices = categoryQueriesServices;
        }

        protected override void CurrentPageOnAppearing(object sender,EventArgs eventArgs)
        {
            base.CurrentPageOnAppearing(sender,eventArgs);

            Task.Run(async () =>
            {
                var categories = await this.categoryQueriesServices.GetCategoryModelsAsync();
                Device.BeginInvokeOnMainThread(() =>
                {
                    Categories = new ObservableCollection<Category>(categories);
                });
            });
        }

    }

感谢您的帮助

解决方法

我们已经分析了所报告的问题。我们根据提供的信息准备了一个样本。我们已尝试在最后复制报告的问题,我们担心在最后无法复制该问题。我们随附了示例供您参考。

示例:https://www.syncfusion.com/downloads/support/directtrac/general/ze/CombBoxAsync216018123

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。