Xamarin表单-未检测到更改

问题描述

我一直在尝试创建一个自定义搜索字段,该字段会在输入时即时将对象添加到列表中。 但由于某些原因,它在我重新加载时仅显示带有项目的列表。

CreateHerdPageviewmodel

   public class CreateHerdPageviewmodel : viewmodelBase
    {
        private IHerdService herdService;
        private string searchInput;
        public string SearchInput { get => searchInput; 
            set { 
                SetProperty(ref searchInput,value);
                RaisePropertyChanged(nameof(HerdSearchResults));
            } 
        }

        private List<Herd> herdSearchResults;
        public List<Herd> HerdSearchResults
        {
            get => herdSearchResults;

            set {
                SetProperty(ref herdSearchResults,value);
                }
        }

        private List<Herd> allHerds;
        public List<Herd> AllHerds { get => allHerds; set => SetProperty(ref allHerds,value); }

        public DelegateCommand SearchChrOrAddressCommand { get; set; }
        public CreateHerdPageviewmodel(INavigationService navigationService,IHerdService herdService)
            : base(navigationService)
        {
            this.herdService = herdService;
            SearchChrOrAddressCommand = new DelegateCommand(SearchChrOrAddress);
        }
        private void SearchChrOrAddress()
        {
            Herd herdMatch = new Herd();
            for (int i = 0; i < AllHerds.Count; i++)
            {
                herdMatch = AllHerds[i];
            }
            if (herdMatch.ChrAddress.Area.Contains(SearchInput))
            {
                if (HerdSearchResults.Contains(herdMatch) == false)
                {
                    HerdSearchResults.Add(herdMatch);
                    RaisePropertyChanged(nameof(HerdSearchResults));
                } 
            }
            
        }
        public async override void OnNavigatedTo(INavigationParameters parameters)
        {
            base.OnNavigatedTo(parameters);
            AllHerds = await herdService.GetHerds();
            HerdSearchResults = new List<Herd>();
        }


    }
}

CreateHerdPage.Xaml

xmlns:yummy="clr-namespace:Xamarin.Forms.PancakeView;assembly=Xamarin.Forms.PancakeView"
xmlns:b="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
xmlns:Customrenderer="clr-namespace:ChrApp.Customrenderer">

                   <yummy:PancakeView
                        Grid.Column="0"
                        Grid.Row="0"
                        Grid.ColumnSpan="3"
                        CornerRadius="10">
                    <Customrenderer:NoUnderlineEntry
                            x:Name="SearchField"
                            Style="{StaticResource UpdateEntry}"
                            Margin="0"
                            TextChanged="RemovceSearchIcon"
                            Text="{Binding SearchInput}">
                        <Customrenderer:NoUnderlineEntry.Behaviors>
                            <b:EventToCommandBehavior
                                EventName="TextChanged"
                                Command="{Binding SearchChrOrAddressCommand}"/>
                        </Customrenderer:NoUnderlineEntry.Behaviors>
                    </Customrenderer:NoUnderlineEntry>
                </yummy:PancakeView>

如您所见,我尝试了各种方法来使它识别更改,但是没有运气。

有人能启发我所缺少的东西吗?

预先感谢

解决方法

所以问题是我使用的是普通的List,而不是ObservableCollection。如此解决就解决了这个问题。