C# Xamarin表单-在C中从StackLayout中删除子元素#

C# Xamarin表单-在C中从StackLayout中删除子元素#,c#,xaml,xamarin.forms,C#,Xaml,Xamarin.forms,在XAML页面的代码隐藏中,我正在检查模型中的文本字段是否为null,如果不是,我将用该字段更新labels文本属性,如果为null,我希望将其从XAML中完全删除 起初,我尝试将IsVisible设置为false,将HeightRequest设置为0,但我仍然可以看到stackLayout中标签所在的空间,因此我尝试从主堆栈中删除包含标签的内部堆栈 TopStack.Children.Remove(addressStack); 但是,我仍然可以看到一个空间,在这个空间中,被移除的堆栈应该是

在XAML页面的代码隐藏中,我正在检查模型中的文本字段是否为null,如果不是,我将用该字段更新labels文本属性,如果为null,我希望将其从XAML中完全删除

起初,我尝试将IsVisible设置为false,将HeightRequest设置为0,但我仍然可以看到stackLayout中标签所在的空间,因此我尝试从主堆栈中删除包含标签的内部堆栈

TopStack.Children.Remove(addressStack);
但是,我仍然可以看到一个空间,在这个空间中,被移除的堆栈应该是


有没有办法完全删除内部堆栈,包括它可能占用的空间?

您可以使用
stack.Children.remove(textField)
从堆栈中删除元素

如果知道元素在堆栈中的位置,可以在

  theStack.Children.RemoveAt(positionInStack);
如果要删除内部堆栈,即外部堆栈的子堆栈和文本字段的父堆栈,请使用

outerStack.Children.Remove(textField.parent);

我希望这些信息能对你有所帮助

您可能需要在移除后调用
InvalidateMeasure
是否尝试在set
ParentStack.Children[X]之后调用
ParentStack.ForceLayout()