Xamarin Forms - 从 C# 中的 StackLayout 中删除子元素

Dar*_*ter 2 c# xaml xamarin.forms

在 XAML 页面的代码隐藏中,我正在检查模型中的文本字段是否为空,如果不是,则使用该字段更新标签文本属性,如果为空,我想将其从 XAML 中完全删除。

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

TopStack.Children.Remove(addressStack);
Run Code Online (Sandbox Code Playgroud)

但是我仍然可以看到被移除的堆栈所在的空间。

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

Tec*_*dle 5

您可以使用theStack.Children.Remove(textField);来从堆栈中删除元素。

如果您知道元素在堆栈中的位置,则可以使用 remove at

  theStack.Children.RemoveAt(positionInStack);
Run Code Online (Sandbox Code Playgroud)

如果要删除内部堆栈(它是外部堆栈的子项和文本字段的父项),请使用

outerStack.Children.Remove(textField.parent);
Run Code Online (Sandbox Code Playgroud)

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