0

私は簡単なリーダーボードを作っています。私が望むのは、チーム名の列ラベルをグリッド列と同じサイズにすることです.

<ListView x:Name="TeamList" Background="#00000000" BorderBrush="#00000000">
    <ListView.View>
        <GridView>
            <GridView.ColumnHeaderContainerStyle>
                <Style>
                    <Setter Property="FrameworkElement.Visibility" Value="Collapsed"/>
                </Style>
            </GridView.ColumnHeaderContainerStyle>

            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="70"></ColumnDefinition>
                                <ColumnDefinition Width="10"></ColumnDefinition>
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="10"></ColumnDefinition>

                                <!-- more columns for points -->
                            </Grid.ColumnDefinitions>

                            <Border Grid.Column="0" BorderBrush="#4Fd5f4ff" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Background="#4Fd5f4ff">
                                <Label Width="50" 
            HorizontalAlignment="Center" HorizontalContentAlignment="Center" 
            VerticalAlignment="Center" VerticalContentAlignment="Center" FontSize="23" FontWeight="Bold" 
            Foreground="Black">#1</Label>
                            </Border>

                            <!-- This is shortened to the size of the content -->
                            <Border Grid.Column="2" BorderBrush="#7Fd5f4ff" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Background="#7Fd5f4ff">
                                <Label  Height="40" Content="{Binding Path=Name}"
            FontSize="19" FontWeight="Bold" Padding="20 0 0 0"
            Foreground="Black" VerticalContentAlignment="Center" VerticalAlignment="Center"></Label>
                            </Border>

                            <!-- More columns for points -->
                        </Grid>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

上記はテーマ名をリストしていますが、Border/Label の幅は実際のコンテンツのサイズに合わせて短縮されています。

ラベルをグリッド列のサイズに拡張するにはどうすればよいですか * ?

4

1 に答える 1

1

問題は、コンテンツのサイズに応じたサイズGridしかないことです。GridViewオンにするShowGridLines="True"と、Gridこの問題がすぐにわかります。

この問題を回避するにはGrid、幅を持たせる必要があります。

私はSnoopGridViewを使用して VisualTree を見回しましたが、GridView の任意の列の最大スペースを埋めるために実際に伸びる要素がないことがわかりました。そのため、バインディングでこれを行うことができないようです。RelativeSource

ただし、単一の列がある場合は、バインディングを使用GridViewして の幅にバインドし、値から X スペースを削除するを使用して、GridViewRowPresenterRelativeSourceConverterMargins

<Grid Width="{Binding Path=ActualWidth, Converter={StaticResource MyConverter}",
    RelativeSource={RelativeSource AncestorType={x:Type GridViewRowPresenter}}"
    ... />

ただし、利用可能な場合は、静的な幅の方がおそらく簡単です。

もちろん、これが の唯一の列である場合は、HB が言ったように、単一の 内に独自の列を作成するのではなく、GridView複数を使用する方がはるかに優れています。GridViewColumnsGridGridViewColumn

于 2013-05-09T14:23:15.413 に答える