Создание моей первой корневой страницы:Xamarin.Forms Привязка данных пользовательских ячейки
public class App : Application
{
public App()
{
MainPage = new NavigationPage (new ListExample());
}
}
Это мой Сотрудник объект:
public class Employee
{
public string ImageUri { get; set; }
public string DisplayName { get; set; }
public string Twitter { get; set; }
public Employee (string imageUri, string displayName, string twitter)
{
this.ImageUri = imageUri;
this.DisplayName = displayName;
this.Twitter = twitter;
}
}
Это, как я установить элементы для моего UITableView
:
public class ListExample : ContentPage
{
public ListExample()
{
var listView = new ListView
{
RowHeight = 40
};
List<Employee> myListOfEmployeeObjects = new List<Employee> {
new Employee("", "Max Mustermann", "@fake1"),
new Employee("", "Eva Mustermann", "@fake2")
};
listView.ItemsSource = myListOfEmployeeObjects;
listView.ItemTemplate = new DataTemplate(typeof(EmployeeCell));
}
}
А вот мой настраиваемое представление ячейки таблицы:
public class EmployeeCell : ViewCell
{
public EmployeeCell()
{
var image = new Image
{
HorizontalOptions = LayoutOptions.Start
};
image.SetBinding(Image.SourceProperty, new Binding("ImageUri"));
image.WidthRequest = image.HeightRequest = 40;
var nameLayout = CreateNameLayout();
var viewLayout = new StackLayout()
{
Orientation = StackOrientation.Horizontal,
Children = { image, nameLayout }
};
View = viewLayout;
}
static StackLayout CreateNameLayout()
{
var nameLabel = new Label
{
HorizontalOptions= LayoutOptions.FillAndExpand
};
nameLabel.SetBinding(Label.TextProperty, "DisplayName");
var twitterLabel = new Label
{
HorizontalOptions = LayoutOptions.FillAndExpand
};
twitterLabel.SetBinding(Label.TextProperty, "Twitter");
var nameLayout = new StackLayout()
{
HorizontalOptions = LayoutOptions.StartAndExpand,
Orientation = StackOrientation.Vertical,
Children = { nameLabel, twitterLabel }
};
return nameLayout;
}
}
Если я правильно понимаю, необходимо установить привязку в ячейке пользовательского вида таблицы. Система принимает свойства моего объекта и имя свойства, и имя привязки должно совпадать.
Использование приведенного выше кода приводит к пустующему виду.
Что я делаю неправильно?
Не можете найти что-нибудь не так и 'ListView' хорошо работает здесь. Возможно, ваш «ListView» ошибочен? Не могли бы вы также разместить здесь макет страницы? –
@AlexLau: Спасибо за ваш ответ. Я отредактировал мой вопрос и включил еще один код. Вид таблицы работал с макетом по умолчанию. Теперь я переключился на пользовательскую ячейку, и что-то пошло не так. – testing