S
S
Sasha_Prosto2022-01-24 19:53:00
Android
Sasha_Prosto, 2022-01-24 19:53:00

How to add a SearchBar to a Xamarin Form project?

I have code

public partial class Dati : ContentPage
    {
        internal static IEnumerable<object> dati;

        public ObservableCollection<Grouping<string, Data>> DatiGroups { get; set; }

        public Dati()
        {
            InitializeComponent();
            var dati = new List<Data>
            {
                new Data {Vek ="VI-IX века", Title="6 – 9 вв.", Opicanie="Образование племенных союзов Восточных славян." },
                new Data {Vek ="VI-IX века", Title="9 в.", Opicanie="Создание ранних государственных объединений Восточных славян в районе Днепра и оз. Ильмен." },
new Data {Vek ="VI-IX века", Title="860", Opicanie="Объединенный морской поход Днепровских славян и варягов на Константинополь (Царьград)." },
new Data {Vek ="VI-IX века", Title="862– 879", Opicanie="Княжение Рюрика в Новгороде." },
new Data {Vek ="VI-IX века", Title="862 – 882", Opicanie="Правление в Киеве князей Аскольда и Дира." },
new Data {Vek ="VI-IX века", Title="882 – 912", Opicanie="Княжение Олега в Киеве." },
new Data {Vek ="VI-IX века", Title="907", Opicanie="Поход Олега на Константинополь. Первый договор Руси с Византией о дружественных отношениях, нормах международной торговли и мореплавания." },
new Data {Vek ="VI-IX века", Title="911", Opicanie="Второй договор Руси с Византией." },
new Data {Vek ="VI-IX века", Title="912 – 945", Opicanie="Княжение Игоря в Киеве." },
new Data {Vek ="VI-IX века", Title="941", Opicanie="Первый поход князя Игоря на Константинополь, закончившийся провалом." },
new Data {Vek ="VI-IX века", Title="944", Opicanie="Второй поход князя Игоря на Константинополь. Договор Руси с Византией. (Русь теряла право беспошлинной торговли и обязывалась оказывать помощь в охране пограничных с нею владений Византии)." },
new Data {Vek ="VI-IX века", Title="945 – 969", Opicanie="Правление Ольги в Киеве (после убийства древлянами ее мужа князя Игоря)." },
new Data {Vek ="VI-IX века", Title="945 – 972(973)", Opicanie="Княжение Святослава Игоревича в Киеве." },
new Data {Vek ="VI-IX века", Title="Около 957", Opicanie="Посольство княгини Ольги в Константинополь. Принятие ею христианства (под именем Елена)." },
new Data {Vek ="VI-IX века", Title="965", Opicanie="Разгром князем Святославом Хазарского каганата (на нижней Волге). Установление контроля над торговым путем Волга – Каспийское море." },
new Data {Vek ="VI-IX века", Title="968 – 971", Opicanie="Походы князя Святослава в Дунайскую Болгарию. Войны с Византией и печенегами." },
new Data {Vek ="VI-IX века", Title="968 (969)", Opicanie="Разгром печенегов под Киевом." },
new Data {Vek ="VI-IX века", Title="971", Opicanie="Договор Руси с Византией." },
new Data {Vek ="VI-IX века", Title="972(973) – 980", Opicanie="Междоусобицы в Киеве после убийства печенегами князя Святослава." },
new Data {Vek ="VI-IX века", Title="980 – 1015", Opicanie="Княжение Владимира I Святославича в Киеве." },
new Data {Vek ="VI-IX века", Title="980", Opicanie="Создание единого пантеона языческих богов в Киеве." },
new Data {Vek ="VI-IX века", Title="98", Opicanie="Поход князя Владимира на волжских булгар." },
new Data {Vek ="VI-IX века", Title="988 – 989", Opicanie="Крещение Руси." },
new Data {Vek ="VI-IX века", Title="990-е гг.", Opicanie="Сооружение в Киеве церкви Успения Богородицы (Десятинной церкви)." },
};

var groups = dati.GroupBy(p => p.Vek).Select(g => new Grouping<string, Data>(g.Key, g));
            // передаем группы в PhoneGroups
            DatiGroups = new ObservableCollection<Grouping<string, Data>>(groups);
            this.BindingContext = this;
}
private void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
        {
            //thats all you need to make a search  

            if (string.IsNullOrEmpty(e.NewTextValue))
            {
                phonesList.ItemsSource = dati;
            }

            else
            {
                phonesList.ItemsSource = dati.Where(x => x.Title.StartsWith(e.NewTextValue));
            }
        }

    }
    
}


Error in this snippet
phonesList.ItemsSource = dati.Where(x => x.Title.StartsWith(e.NewTextValue));


Error:
Error CS1061 'object' does not contain a definition for 'Title' and could not find an available extension method 'Title' that takes type 'object' as the first argument (possibly missing using directive or assembly reference).

I'm in school and have only recently started learning programming, so don't judge too harshly.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Roman, 2022-01-25
@Sasha_Prosto

internal static IEnumerable<object> dati;
Change to
internal static IEnumerable<Data> dati;

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question