Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 当文本更改时,网格中的两个标签(同一列,差异行)都会移动。为什么?_Xaml_Xamarin_Xamarin.forms - Fatal编程技术网

Xaml 当文本更改时,网格中的两个标签(同一列,差异行)都会移动。为什么?

Xaml 当文本更改时,网格中的两个标签(同一列,差异行)都会移动。为什么?,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,显示模拟器的视频: 代码: <Grid HorizontalOptions="Center" VerticalOptions="Center"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefin

显示模拟器的视频:

代码:

  <Grid HorizontalOptions="Center" VerticalOptions="Center">
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="4*"/>
      <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Switch Grid.Column="0"
            HorizontalOptions="Center"
            IsToggled="{Binding SwitchToggled}"/>
    <Label Grid.Column="1"
           HorizontalOptions="Center"
           Text="{Binding SwitchToggled, 
                          Converter={StaticResource Key=boolToStrConv}}"/>
    <Switch Grid.Column="0" Grid.Row="1"
            HorizontalOptions="Center"
            x:Name="switch2"/>
    <Label Grid.Column="1" Grid.Row="1"
           HorizontalOptions="Center"
           Text="{Binding Source={x:Reference switch2},
                          Path=IsToggled,
                          Converter={StaticResource Key=boolToStrConv}}"/>
  </Grid>

我的期望是,无论标签的文本长度如何更改,它都将居中-考虑到它们都有一个水平选项中心


为什么会发生这种情况?我该如何解决这一问题?

您需要查看网格所在的容器以及网格在该容器中居中(浮动)的事实

为网格指定一种背景色,为其容器指定一种不同的背景色,您将看到它的大小取决于它所包含的内容,因为您是
*
(星形)它的大小和网格本身在其容器的中心“浮动”,更改网格的内容,网格的大小将更改:


我知道我本可以接受这个正确的答案,然后就此了结。写这封信是为了亲自说声谢谢:)
<Grid VerticalOptions="Center" HorizontalOptions="Center" BackgroundColor="Gray">           
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Switch Grid.Column="0" HorizontalOptions="Center" BackgroundColor="Red" x:Name="switch1" />
    <Label Grid.Column="1" HorizontalOptions="Center" BackgroundColor="Red" Text="False" x:Name="label1" />
    <Switch Grid.Column="0" Grid.Row="1" HorizontalOptions="Center" BackgroundColor="Green" x:Name="switch2" />
    <Label Grid.Column="1" Grid.Row="1" HorizontalOptions="Center" BackgroundColor="Green" Text="False" x:Name="label2" />
</Grid>
<Grid VerticalOptions="StartAndExpand" HorizontalOptions="FillAndExpand" BackgroundColor="Gray">            
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Switch Grid.Column="0" HorizontalOptions="Center" BackgroundColor="Red" x:Name="switch1" />
    <Label Grid.Column="1" HorizontalOptions="Center" BackgroundColor="Red" Text="False" x:Name="label1" />
    <Switch Grid.Column="0" Grid.Row="1" HorizontalOptions="Center" BackgroundColor="Green" x:Name="switch2" />
    <Label Grid.Column="1" Grid.Row="1" HorizontalOptions="Center" BackgroundColor="Green" Text="False" x:Name="label2" />
</Grid>