Ich arbeite an einer Seite, die verschachtelte ListViews erfordert. Ich bemerkte, dass mein Layout durch eine ListView in einem StackLayout verzerrt wurde, die viel mehr Platz verbrauchte, als die Einträge es erfordern würden.Wie kann ich meine ListView verbrauchen so wenig Platz wie nötig in Xamarin.Forms
Wie sich herausstellt, verbraucht der ListView auch ohne Einträge auf Xamarin viel mehr Platz, als er möglicherweise benötigen würde.
Kann jemand dieses Verhalten loswerden?
WPF (was in Ordnung macht):
<StackPanel Background="Green">
<Label Content="hi" Background="Aqua"></Label>
<ListView Background="Red"></ListView>
</StackPanel>
Xamarin:
public class CustomListView : ListView
{
public override SizeRequest GetSizeRequest(double widthConstraint, double heightConstraint)
{
var sizeRequest = base.GetSizeRequest(widthConstraint, heightConstraint);
var b = this.Behaviors;
return sizeRequest;
}
}
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new ContentPage
{
BackgroundColor = Color.Green,
Content = new StackLayout
{
VerticalOptions = LayoutOptions.Start,
BackgroundColor = Color.Aqua,
Children = {
new Label {
XAlign = TextAlignment.Center,
Text = "Welcome to Xamarin Forms!"
}, new CustomListView()
{
BackgroundColor = Color.Red,
VerticalOptions = LayoutOptions.Start
}
}
}
};
}
}
In WPF Sie sehen das Ergebnis kann ich erwarten würde, wenn die ListView wird in einem StackLayout angezeigt - bisher konnte ich nicht um Kinder zu messen und die SizeRequest entsprechend zurückzugeben, um dies zu beheben.
Während einige andere Elemente ILayoutController implementieren - ListView nicht.
die manuelle Einstellung der Höhe ist keine Option. Ich denke, das ist nur eine schlechte Implementierung, wenn es sich nicht wie in WPF verhält ... Wenn ich möchte, dass es den Raum ausfüllt, würde ich ein Gitter verwenden. – Dbl
Auch wenn ich die Listview durch ein Label ersetze, wird es nicht konsumiere die verbleibende Höhe im Elternteil. In diesem Fall handelt es sich nur um die Listenansicht – Dbl