2016-07-21 11 views
1

Ich habe drei Spalten. Ich habe Header von ListView eingerichtet, um Daten anzuzeigen - seine Arbeit ist korrekt. Ich setze ähnlich ListView ItemTemplate, aber es zeigt falsche Daten an.Listview falsche Anzeigen Spalten

<Grid> 
      <ListView x:Name="listView" Grid.Column="0"> 
        <ListView.HeaderTemplate> 
         <DataTemplate> 
          <Grid Background="Gray"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*"/> 
            <ColumnDefinition Width="*"/> 
            <ColumnDefinition Width="*"/> 
           </Grid.ColumnDefinitions> 

           <TextBlock Text="Блюдо" Grid.Column="0"   VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontWeight="Bold" FontSize="18" ></TextBlock> 
           <TextBlock Text="Цена" Grid.Column="1"   VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontWeight="Bold" FontSize="18" ></TextBlock> 
           <TextBlock Text="Количество" Grid.Column="2" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontWeight="Bold" FontSize="18" ></TextBlock> 
          </Grid> 
         </DataTemplate> 
       </ListView.HeaderTemplate> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <Grid > 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
           <ColumnDefinition Width="*"/> 
           <ColumnDefinition Width="*"/> 
          </Grid.ColumnDefinitions> 
           <TextBlock Text="{Binding bludo}" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontSize="18" ></TextBlock> 
           <TextBlock Text="{Binding tsena}" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontSize="18" ></TextBlock> 
           <TextBlock Text="{Binding kol}" Grid.Column="2" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontSize="18" ></TextBlock> 
         </Grid> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 
      </Grid> 

enter image description here

+1

Haben Sie versucht, die horizontale Ausrichtung des Inhalts im Container-Stil des Elements festzulegen, sodass die Elemente auf die volle Breite gestreckt werden? [Beispiel hier] (http://stackoverflow.com/a/38028233/2681948) – Romasz

+0

ich entferne horizontale Ausrichtung. Similaryy – user1088259

Antwort

2

Das hier Problem ist, dass in ListViewItem, es ist HorizontalContentAlignment Eigenschaft auf Left standardmäßig eingestellt. Diese Eigenschaft gibt die horizontale Ausrichtung des Inhalts des Steuerelements an. Wenn es auf Left gesetzt ist, wird der Inhalt ListViewItem, d. H. Der Grid in Ihrem DataTemplate linksbündig sein. Die Gird wird also nicht die gesamte Breite des ListViews einnehmen und Sie werden das "seltsame" Layout wie in Ihrem Screenshot sehen.

Um klar zu sehen dies, wir ListViewItem styles and templates in seinem Standardstil überprüfen können, können wir

<Setter Property="HorizontalContentAlignment" Value="Left"/> 

Um dieses Problem zu beheben, sehen wir die HorizontalContentAlignment Eigenschaft auf Stretch wie einstellen:

<ListView x:Name="listView" Grid.Column="0"> 
    <ListView.HeaderTemplate> 
     <DataTemplate> 
      <Grid Background="Gray"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Text="Блюдо" /> 
       <TextBlock Grid.Column="1" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Text="Цена" /> 
       <TextBlock Grid.Column="2" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Text="Количество" /> 
      </Grid> 
     </DataTemplate> 
    </ListView.HeaderTemplate> 

    <!-- Add this in your code --> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListView.ItemContainerStyle> 

    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" Text="{Binding bludo}" /> 
       <TextBlock Grid.Column="1" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" Text="{Binding tsena}" /> 
       <TextBlock Grid.Column="2" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" Text="{Binding kol}" /> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

ausgezeichnet !!!!!! – user1088259

Verwandte Themen