@Sasha_Prosto

Как добавить SearchBar в проект Xamarin Form?

У меня есть код
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));
            }
        }

    }
    
}


Ошибка в данном фрагменте
phonesList.ItemsSource = dati.Where(x => x.Title.StartsWith(e.NewTextValue));


Ошибка:
Ошибка CS1061 "object" не содержит определения "Title", и не удалось найти доступный метод расширения "Title", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Я учусь в школе и только недавно начал изучать программирование, поэтому не судите строго.
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
internal static IEnumerable<object> dati;

Поменять на

internal static IEnumerable<Data> dati;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы