#c# #xamarin.forms
#c# #xamarin.forms
Вопрос:
Итак, я создал пользовательский элемент управления для автозаполнения, и все работает, за исключением того, что мой список не будет привязан. Я установил список как список типа интерфейса, чтобы я мог использовать различные объекты, которые все наследуются от этого типа.
public static readonly BindableProperty DataListProperty =
BindableProperty.Create(nameof(DataList), typeof(List<IAutoCompleteModel>), typeof(AutoCompleteT),
default(List<IAutoCompleteModel>), propertyChanged: DataListPropertyChanged);
public List<IAutoCompleteModel> DataList
{
get { return (List<IAutoCompleteModel>)GetValue(DataListProperty); }
set { SetValue(DataListProperty, value); }
}
private static void DataListPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
AutoCompleteT control = (AutoCompleteT)bindable;
List<IAutoCompleteModel> temp = (List<IAutoCompleteModel>)newValue;
control.Data.Clear();
foreach (IAutoCompleteModel model in temp.OrderBy(prop => prop.Title))
control.Data.Add(model.Title);
}
Интерфейс
public interface IAutoCompleteModel
{
public Guid Id { get; set; }
public string Title { get; set; }
}
Комментарии:
1. Где код привязки? Не могли бы вы поделиться с нами минимальным, воспроизводимым примером?
2. Я привязываюсь к списку объектов, которые наследуются от интерфейса. {Привязка клиентов} Довольно просто. В итоге я сделал это по-другому и установил объекты, унаследовавшие интерфейс, для реализации метода, который создает объект. общедоступный класс AutoCompleteModel { общедоступный идентификатор Guid { get; set; } Заголовок общедоступной строки { get; set; } } Я надеялся на другое, но я соглашусь на это