2013-05-09 38 views
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> 

上面列出的主題名稱,但邊境/標籤的寬度縮短到大小的實際內容。

如何獲得標籤以擴展到網格列*的大小?

+1

如何在一列中使用多個GridViewColumns而不是Grid? – 2013-05-09 13:41:37

+0

你可以添加*到gridview列嗎?這就是爲什麼我首先去了一個網格。我想讓團隊的名字填滿剩餘空間,我不知道如果用戶調整應用程序的大小,剩下多少空間。 – Patrick 2013-05-09 15:32:53

+0

是的,你可以使用*。 – 2013-05-09 15:35:00

回答

0

問題是您的Grid根據其內容的大小隻在GridView的大小。如果您爲Grid啓用ShowGridLines="True",則可以立即看到此問題。

爲了避免這個問題,你必須給你的Grid一個寬度。

我使用Snoop查看了一個GridView的VisualTree,並且看到沒有實際拉伸的元素可以填充GridView中任何列的最大空間量,所以看起來您不能這樣做與RelativeSource綁定。

如果您在GridView,雖然有一列,你也許可以用一個RelativeSource綁定綁定到GridViewRowPresenter的寬度,並使用Converter從價值消除X空間佔Margins

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

但是,如果可用,靜態寬度可能更容易。

當然,如果這是唯一的列在你的GridView,您將得到更好的服務正好利用多個GridViewColumns,而不是建立自己的GridGridViewColumn裏面,像HB said