次のように考えてください。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
このXAMLはWrapTextBlock
テキストを折り返すことを許可します。これを行うと、WrapTextBlock
はすべてのスペースを取り、NotWrapTextBlock
を右にプッシュします。
しかし、私がやりたいのは、WrapTextBlock
に可能な限り少ないスペースを割り当て、NotWrapTextBlock
の直後にWrapTextBlock
を押して右側を空のスペースで埋めることです。
つまり、次のことを意味します。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
しかし、ここで重要なのは、WrapTextBlock
のテキストが折り返されなくなったことです。
私は次のようなものを意味します:
テキストが長すぎる場合、ワープする必要があります。
テキストがワープする必要がないほど短い場合:
その理由は、ColumnDefinition
をAutoまたは*として定義することにより、TextBlock
が使用できるサイズを制限するものは何もありません。したがって、テキストが折り返されないことが予想される動作です。したがって、Width
またはMaxWidth
のいずれかに直接ColumnDefinition
またはTextBlock
を定義する必要があります。たとえば、
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MaxWidth="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
代わりに、たとえば、グリッドが使用する必要があるスペースの7%だけを使用できるようにしたい場合は、Width
を次のように変更します。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>
したがって、最初の列は使用可能なスペースの7%を占め、右側の列は残りを消費します。お役に立てれば。
追加を編集:
表示しているものは、最初のスニペットとほぼ一致しています。最初のスニペットでは最初の列がプッシュされ、2番目のスニペットではコンテンツを表示するのに十分なスペースのみが許可されます。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>