2013-02-10 2 views
0

У меня есть список людей, сгруппированных по первой букве имени.Удалить место между группами GridView

Результат выглядит следующим образом:

image http://img5.imageshack.us/img5/1291/77471911.png

Проблема есть пространство между группами D и G, как я могу удалить его?

GroupStyle это объявить, как это:

<GridView.ItemTemplate> 
        <DataTemplate> 
         <Border Width="150" Height="150" Background="#FFF14B01"> 
          <Grid> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="30" /> 
            <RowDefinition Height="30" /> 
           </Grid.RowDefinitions> 
           <TextBlock Text="{Binding Name}" VerticalAlignment="Center" Foreground="White" /> 
          </Grid> 
         </Border> 
        </DataTemplate> 
       </GridView.ItemTemplate> 
       <GridView.GroupStyle> 
        <GroupStyle HidesIfEmpty="True"> 
         <GroupStyle.HeaderTemplate> 
          <DataTemplate> 
           <Grid Margin="1,0,0,20"> 
            <TextBlock FontWeight="Bold" Style="{StaticResource SubheaderTextStyle}" Text="{Binding Title}" /> 
           </Grid> 
          </DataTemplate> 
         </GroupStyle.HeaderTemplate> 
         <GroupStyle.Panel> 
          <ItemsPanelTemplate> 
           <VariableSizedWrapGrid Margin="0,0,80,0" ItemHeight="150" ItemWidth="150" /> 
          </ItemsPanelTemplate> 
         </GroupStyle.Panel> 
        </GroupStyle> 
       </GridView.GroupStyle> 

Там нет ключей с пустой коллекции в коллекцию/Value Key.

Фактически, если группа «A» находится на 5 столбцах, каждая группа будет иметь 5 колонок, даже если есть только один элемент.

Итак, на картинке D имеет 3 пространства столбцов и G тоже.

Заранее спасибо


Edit:

Проблема решена путем добавления этого:

<GridView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal"/> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 

Спасибо за ваши ответы

+0

Вы должны были изменить '' to '

ответ

0

Я думаю, что причина этой пустой области является что у вас есть пустые экземпляры класса, который предоставляет имена и буквы. Однако, если такого не существует, я думаю, что это тоже было бы решением:

Создайте свойство в источнике, чтобы он возвращал, есть ли элемент в последовательности - можно сделать, чтобы вернуть видимость.

public Visibility IsVisible 
{ 
     get 
     { 
     return Key == "" ? Visibility.Collapsed : Visibility.Visible; 
     } 
} 

Затем привяжите его к видимости сетки.