2015-06-02 2 views
1

Я пытаюсь отобразить некоторые данные из коллекции Observable в ListView. Связывание работает нормально. Моя единственная проблема, которую я не могу исправить, - это макет ListView. Я использую сетку с двумя строками для разделения моего представления. ListView - это вторая строка. Я пытаюсь использовать * для установки столбцов и строк, как это предлагается в большинстве источников. Код для ListView - это.ListView заполняет ширину родительского экрана или экрана

<Grid Grid.Row="1" Margin="10,0,10,0" HorizontalAlignment="Stretch"> 
          <ListView ItemsSource="{Binding Collection}" HorizontalAlignment="Stretch"> 
           <ListView.ItemTemplate> 
            <DataTemplate> 
             <Grid HorizontalAlignment="Stretch"> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="*"/> 
               <ColumnDefinition Width="*"/> 
               <ColumnDefinition Width="*"/> 
              </Grid.ColumnDefinitions> 
              <TextBlock Grid.Column="0" HorizontalAlignment="Center" Text="{Binding Period}" Foreground="{StaticResource ColorBrush}" FontFamily="{StaticResource Family}" FontSize="20"/> 
              <TextBlock Grid.Column="1" HorizontalAlignment="Center" Text="{Binding Currency}" Foreground="{StaticResource ColorBrush}" FontFamily="{StaticResource Family}" FontSize="20"/> 
              <TextBlock Grid.Column="2" HorizontalAlignment="Center" Text="{Binding Date}" Foreground="{StaticResource ColorBrush}" FontSize="20" FontFamily="{StaticResource Family}"/> 
             </Grid> 
            </DataTemplate> 
           </ListView.ItemTemplate> 
          </ListView> 
         </Grid> 

Когда я использую HorizontalAlignment = «Stretch» ​​для сетки, которая содержит ListView и сам ListView данные отображаются на левой стороне без получения на всю ширину родительского вида. Когда я явно устанавливаю Width для некоторого значения (i.e.380), он отображает OK.

<Grid Grid.Row="1" Margin="10,0,10,0"> 
          <ListView ItemsSource="{Binding Collection}" Width="380"> 
           <ListView.ItemTemplate> 
            <DataTemplate> 
             <Grid Width="380"> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="*"/> 
               <ColumnDefinition Width="*"/> 
               <ColumnDefinition Width="*"/> 
              </Grid.ColumnDefinitions> 
              <TextBlock Grid.Column="0" HorizontalAlignment="Center" Text="{Binding Period}" Foreground="{StaticResource ColorBrush}" FontFamily="{StaticResource Family}" FontSize="20"/> 
              <TextBlock Grid.Column="1" HorizontalAlignment="Center" Text="{Binding ValueInCurrency}" Foreground="{StaticResource ColorBrush}" FontFamily="{StaticResource Family}" FontSize="20"/> 
              <TextBlock Grid.Column="2" HorizontalAlignment="Center" Text="{Binding Date}" Foreground="{StaticResource ColorBrush}" FontSize="20" FontFamily="{StaticResource Family}"/> 
             </Grid> 
            </DataTemplate> 
           </ListView.ItemTemplate> 
          </ListView> 
         </Grid> 

Но я хочу знать, как лучше не использовать неявные значения, но *.

ответ

8

Попробуйте это. Добавить следующий jus после </ListView.ItemTemplate>

   <ListView.ItemContainerStyle> 
        <Style TargetType="ListViewItem"> 
         <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
        </Style> 
       </ListView.ItemContainerStyle> 
+0

Большое спасибо. Я не нахожу подобный вопрос во время поиска. – Andreas777

Смежные вопросы