C# 添加子代时,Xamarin会形成滚动视图抖动

C# 添加子代时,Xamarin会形成滚动视图抖动,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我是Xamarin的新手,希望这是一个简单的解决方案。问题很简单:我有一个包含StackLayout的ScrollView,在StackLayout中添加新的子项会导致现有的子项挤在一起,从而引起不安的视觉干扰。在我正在编写的应用程序中,随着用户向下滚动,子对象被添加到StackLayout中,因此这种抖动也会导致我的滚动事件出现一些更复杂的问题 孤立的问题很容易重现: <ScrollView> <StackLayout> <Button C

我是Xamarin的新手,希望这是一个简单的解决方案。问题很简单:我有一个包含StackLayout的ScrollView,在StackLayout中添加新的子项会导致现有的子项挤在一起,从而引起不安的视觉干扰。在我正在编写的应用程序中,随着用户向下滚动,子对象被添加到StackLayout中,因此这种抖动也会导致我的滚动事件出现一些更复杂的问题

孤立的问题很容易重现:

<ScrollView>
    <StackLayout>
        <Button Clicked="Button_Clicked" Text="Click Me" HeightRequest="80"/>
        <StackLayout x:Name="Column1"/>
    </StackLayout>
</ScrollView>

private void按钮\u已单击(对象发送者,事件参数e)
{
对于(int i=0;i<5;i++)
Column1.Children.Add(newframe(){BackgroundColor=Xamarin.Forms.Color.Blue,HeightRequest=100});
}
是否有任何方法可以创建可滚动视图并动态添加内容,而不会中断现有内容?
任何帮助都将不胜感激

使用诸如CollectionView或ListView之类的视图来动态地向滚动视图添加子视图更合适。它们都更有效地只加载屏幕上可见的内容,并且已经内置了添加/删除子项的逻辑,这样布局就可以很好地运行


使用CollectionView/ListView,通过使用TemplatSelector,您仍然可以拥有外观不同的子项。

为此使用更合适的控件(如CollectionView或ListView)如何?听起来你在滥用ScrollView让它做类似的事情。@Cheesebaron非常感谢你为我指明了正确的方向。CollectionView使我能够添加子项和滚动,而不会在视觉上破坏现有内容。如果你想发布一个答案,我可以肯定地给你creditCollection视图仍然很紧张。。。我认为颤振是一种方式去。。。(我…沉思)不,可能只是你的细胞非常嵌套/未优化的布局。
private void Button_Clicked(object sender, EventArgs e)
{
    for (int i = 0; i < 5; i++)
        Column1.Children.Add(new Frame() { BackgroundColor = Xamarin.Forms.Color.Blue, HeightRequest = 100 });
}