J'ai un ListView dans mon application Xamarin, définie comme ceci:Comment puis-je obtenir un Xamarin ListView pour dimensionner automatiquement ses lignes sans redimensionner l'écran?
listView = new ListView
{
HorizontalOptions = LayoutOptions.Fill,
HasUnevenRows = true,
RowHeight = -1,
ItemTemplate = new DataTemplate(() =>
{
var nameLabel = new Label
{
VerticalOptions = LayoutOptions.Center,
HorizontalTextAlignment = TextAlignment.Start
};
nameLabel.SetBinding(Label.TextProperty, "DisplayName");
var statusLabel = new Label
{
VerticalOptions = LayoutOptions.Center,
HorizontalTextAlignment = TextAlignment.End
};
statusLabel.SetBinding(Label.TextProperty, "Status");
var grid = new Grid
{
HorizontalOptions = LayoutOptions.Fill,
RowDefinitions = {
new RowDefinition { Height = GridLength.Auto }
},
ColumnDefinitions = {
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
new ColumnDefinition { Width = GridLength.Auto }
}
};
grid.Children.Add(nameLabel, 0, 0);
grid.Children.Add(statusLabel, 1, 0);
return new ViewCell
{
View = grid
};
})
};
Quand je mis sa propriété ItemsSource
, les lignes sont coupées comme ceci:
Si je redimensionnez la écran, ils se redimensionnée à la taille correcte:
Si je change à nouveau ItemsSource
, ils reviennent à être écrêtés. L'appel UpdateChildrenLayout
ou ForceLayout
n'a aucun effet.
Comment puis-je obtenir le ListView pour dimensionner ses lignes correctement, sans avoir à demander à l'utilisateur de redimensionner leur fenêtre? Cela va être une question difficile sur mobile!