0

列ごとに分割されたグリッド コントロールがあります。

<Grid HorizontalAlignment="Stretch">
    <Grid.ColumnDefinitions>
         <ColumnDefinition />
         <ColumnDefinition Width="80" />
         <ColumnDefinition Width="65" />
    </Grid.ColumnDefinitions>
</Grid>

列 0 内に境界線コントロールがあります。ただし、境界線コントロールがこの列の幅までいっぱいにならないという問題に直面しています。境界線には、折り返しが有効になっているテキストブロックが含まれています。textblock 内のテキストが幅よりも大きい場合は、折り返され、利用可能なスペースを埋めるために伸びます。

ただし、テキスト ブロックに 5 ~ 10 文字程度の小さなテキストしか含まれていない場合、ボーダー コントロールは引き伸ばされません。

ボーダー コントロールは、Horizo​​ntalAlignment と VerticalAlignment を Stretch として、Margin を 0 として明示的に設定されています。

4

4 に答える 4

0

国境の定義を教えてください。スターサイズの列にありますが、親のコンテンツ領域を埋めるためにデフォルトの動作を無効にするBorderaHorizontalAlignmentまたはを指定した可能性があります。VerticalAlignmentこの例がKaxamlで正常に機能することを確認しました。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="80"/>
            <ColumnDefinition Width="65"/>
        </Grid.ColumnDefinitions>
        <Border Background="LightGreen"/>
        <TextBlock Grid.Column="1" Foreground="Blue" Text="Column01"/>
        <TextBlock Grid.Column="2" Foreground="Red" Text="Column02"/>
    </Grid>
</Page>
于 2012-08-15T21:32:29.393 に答える
0

あなたの最初の列はありえないと思います

<ColumnDefinition />

むしろそうあるべきだと思う

<ColumnDefinition Width="*" />

ColumnDefinition.Width は GridLength 型です。GridLength は構造体で、デフォルトは「Auto」です。Auto は、その子コントロールが必要とする最小限のスペースを占有しようとします。「*」の値は、他の * 列に対してすべてのスペースを取ることを意味します。(2* の列は、1* の列の 2 倍のスペースを占有します。通常、1 から 100 までの数値を使用し、パーセンテージと考えることをお勧めします)。他の列は * 列ではないため、単純な "*" の値は、残りのスペースをすべて使用することを意味します。

他のすべての列の幅を固定すると、最初の列が「*」になると思われるかもしれませんが、そうではないと思います。

ここでGridLengthの詳細を読むことができます:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.gridlength.aspx

于 2012-08-14T14:34:36.620 に答える
0

境界線の幅を設定してみてください。境界線にスペースを占有させたい場合は、ColumnDefinition を * (First) に設定します。

于 2012-08-14T13:18:32.260 に答える
-1
  <DataGridTemplateColumn Width="150">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Border HorizontalAlignment="Stretch"
                                    VerticalAlignment="Stretch"
                                    BorderBrush="Red"
                                    BorderThickness="2">
                                <TextBlock Text="{Binding Name}" />
                            </Border>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
于 2012-08-14T12:02:48.700 に答える