当孩子的可见性发生变化时,网格不会调整大小

时间:2016-05-04 12:04:51

标签: xamarin grid xamarin.forms

我有一个带有网格的Xamarin应用程序,其中有一个标签和一个条目。 当我更改Entry的文本时,我希望Label可见,如果它是空的,它不会显示Label。

我创建了一个演示应用来验证它与我的代码没有任何关系。但是以下代码也失败了

MainPage = new ContentPage
{
   Content = new Grid
   {
      ColumnDefinitions = new ColumnDefinitionCollection
      {
         new ColumnDefinition { Width = new GridLength(1,GridUnitType.Auto) },
         new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }
      }
   }
};

Label label;
Entry entry;
Grid mainGrid = ((Grid)((ContentPage)MainPage).Content);
mainGrid.Add(btnDelete = new MR.Gestures.StackLayout
   {
      Children = {
         new ExtendedLabel { Style = Styles.LargeLabelIcon, Text = "\ue634", TextColor = Color.Black }
      },
      WidthRequest = 50
   }, 0, 0);
mainGrid.Children.Add(label = new Label { Text = "TEST", IsVisible = false }, 0, 0);
mainGrid.Children.Add(entry = new Entry { }, 1, 0);
entry.TextChanged += (sender, arg) => label.IsVisible = entry.Text.Length > 0;

有人知道如何修复它吗?

2 个答案:

答案 0 :(得分:1)

我不确定这是否是你想要实现的目标:

src/main/java/...

我已向控制器添加了垂直和水平选项。

答案 1 :(得分:0)

我刚刚遇到了一个非常相似的问题。我的子组件上的文本更改后,它会被截断。

问题是你不能将网格上的 ColumnDefinition* 与子项上的 HorizontalOptions 混合在一起。两者兼而有之似乎打破了某些东西。用 HorizontalTextAlignment 替换它为我修复了它。

也许有一天这会帮助其他人。