2013-06-25 10 views
6

グリッドの2番目の行に矩形を追加する必要があります。 グリッドの幅と同じ幅を持つためには、矩形が必要です。XAMLのグリッドセル上で長方形を伸ばす方法

しかし、問題はグリッドの幅が実行時に決定されることです。バックコードでWidthまたはActualWidthにアクセスしようとすると、それぞれNaNまたは0.0になります。

ColumnSpanおよびStretchも機能しません。ここ はコードです:

<Grid x:Name="downloadPdfGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="20"/> 
     <RowDefinition Height ="Auto"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Button x:Name="btn" Content="{Binding Button}" Visibility="Collapsed" Click="OnButtonClick" Grid.Row="0"/> 
    <Rectangle x:Name="underlineRect" Stretch="UniformToFill" Height="2" Fill="White" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1"/> 
</Grid> 

答えて

11

あなたが試してみました:

<Rectangle x:Name="underlineRect" Stretch="UniformToFill" Height="2" Fill="White" 
      Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" 
      Width="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}"/> 

それとも、グリッドの名前がある場合:

<Rectangle x:Name="underlineRect" Stretch="UniformToFill" Height="2" Fill="White" 
      Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" 
      Width="{Binding ActualWidth, ElementName=downloadPdfGrid}"/> 

編集:私は忘れてしまったが。私はRectangle自体ではあまり働かなかったが、これもうまくいくかもしれない:

<Rectangle x:Name="underlineRect" Stretch="UniformToFill" Height="2" Fill="White" 
      Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" 
      HorizontalAlignment="Stretch"/> 
+0

ありがとうサイモン。しかしそれはうまくいかなかった。 –

+0

次に、表示していないグリッドから別のものがあります。私はちょうど窓の中のあなたのグリッドだけで空のWPFアプリケーションを起動し、元のコードと提案された3つの変更すべてをテストし、彼らはすべて自分自身を含めて働いた。 –

+0

あなたは正しいです。問題は親要素に起因していました。 ありがとうサイモン。今は完璧に動作します。 –

関連する問題