2017-07-28 9 views
0

私はこのコードを持っている:Xamarinの単純な2つの列グリッドにGrid.ColumnDefinitionsを指定する必要はありますか?

<ViewCell x:Name="ss"> 
    <Grid VerticalOptions="CenterAndExpand" Padding="20, 0"> 
     <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <local:LabelBodyRendererClass Grid.Column="0" HorizontalOptions="StartAndExpand" Text="Show Subcategory" /> 
     <Switch x:Name="ssSwitch" Grid.Column="1" Toggled="SsSwitch" VerticalOptions="Center" HorizontalOptions="End" /> 
    </Grid> 
</ViewCell> 

私は列の定義を削除すると、それはまだ正常に動作していることが見つかりました:

<ViewCell x:Name="ss"> 
    <Grid VerticalOptions="CenterAndExpand" Padding="20, 0"> 
     <local:LabelBodyRendererClass Grid.Column="0" HorizontalOptions="StartAndExpand" Text="Show Subcategory" /> 
     <Switch x:Name="ssSwitch" Grid.Column="1" Toggled="SsSwitch" VerticalOptions="Center" HorizontalOptions="End" /> 
    </Grid> 
</ViewCell> 

したがって、このような単純な場合のために、彼らが必要とされています。これまでのところ、私はiOSシミュレータでしか見ることができませんでした。私はそれがいつ展開されるのか分からない。

答えて

2

私が知る限り、複数の列または行が必要な場合は、それらを定義する必要があります。私はそれ以外のことを書かれた文書では何も見つけることができません。 Xamarin.Formsが自動的に列(または行)を生成しても、デフォルトの幅または高さの設定は常にAutoになります。レイアウト方法を自由にコントロールしたい場合は、定義を追加し、幅と高さを自分で指定する必要があります。

あなたが言ったように、自分で簡単にテストすることができます。確かめたい場合は、列や行を定義せずに展開しようとするシナリオをいくつか作成してください。

1

各列に特定の値が必要な場合にのみ、ColumnDefinitionを指定する必要があります。そうでなければ、各列は行の幅を等しく共有します。

関連する問題