5

コードは次のとおりです。

<GridViewColumn DisplayMemberBinding="{Binding Path=BookId}" Width="100">
    <GridViewColumn.Header>
        <Border BorderBrush="Black">
            <TextBlock Width="{Binding RelativeSource=
                                       {RelativeSource FindAncestor, 
                                       AncestorType={x:Type GridViewColumn}}, 
                                       Path=Width}" Text="ID">
                <TextBlock.ContextMenu>
                    <ContextMenu>item1</ContextMenu>
                </TextBlock.ContextMenu>
            </TextBlock>
            </Border>
    </GridViewColumn.Header>
</GridViewColumn>

基本的に私がやろうとしているのは、ヘッダーの TextBlock を列全体の幅に合わせることです。

機能していません。テキストブロックの幅は常に内部のテキストと一致します。何かアイデアはありますか?...よろしくお願いします!

4

1 に答える 1

14

あなたのコードには2つの問題があります

  1. GridViewColumn は TextBox の視覚的な祖先ではなく、その祖先は GridViewColumnHeader です
  2. Width ではなく、GridViewColumnHeader の ActualWidth にバインドする必要があります (Width が指定されていない場合、無効な数値になります)。

したがって、コードは次のようになります。

              <GridViewColumn
                            DisplayMemberBinding="{Binding Path=BookId}"
                            Width="100">
                <GridViewColumn.Header>
                    <Border BorderBrush="Black" >
                        <TextBlock Text="ID" Width="{Binding RelativeSource=
                                                        {RelativeSource FindAncestor, 
                                                        AncestorType={x:Type GridViewColumnHeader}}, 
                                                        Path=ActualWidth}">
                            <TextBlock.ContextMenu>
                                <ContextMenu>item1</ContextMenu>
                            </TextBlock.ContextMenu>
                        </TextBlock>
                        </Border>
                </GridViewColumn.Header>
            </GridViewColumn>
于 2009-08-24T14:39:58.083 に答える