2010-10-01 12 views
9

Ho seguito WPF ListView:di controllo in allineamento ListView.GridViewColumn

<ListView Grid.Column="2" Grid.Row="1" Margin="0,53,12,6" 
Name="lvwProperties" 
ItemsSource="{Binding Path=SelectedPropertyItems, Mode=TwoWay}" 
Grid.ColumnSpan="2"> 

     <ListView.View > 

         <GridView> 
          <GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=PropertyName, Mode=TwoWay}" Width="130" /> 
          <GridViewColumn Header="Is Mandatory" Width="90" > 

           <GridViewColumn.CellTemplate> 

            <DataTemplate> 

             <CheckBox IsChecked="{Binding Path=IsMandatory, Mode=TwoWay}" HorizontalAlignment="Center" /> 

            </DataTemplate> 

           </GridViewColumn.CellTemplate> 

          </GridViewColumn> 

         </GridView> 
        </ListView.View> 
       </ListView> 

Voglio fare il centro CheckBox allineato nel 2 ° GridColumn. Impostare il HorizontalAlignment="Center" sembra non fare il trucco. Come ottenere questo in XAML ???

risposta

17

Al contenuto centro in una ListView è necessario impostare ListView.ItemContainerStyle di avere un allineamento orizzontale di Stretch come segue:

<ListView Grid.Column="2" Grid.Row="1" Margin="0,53,12,6" Name="lvwProperties" 
      ItemsSource="{Binding Path=SelectedPropertyItems, Mode=TwoWay}" 
      Grid.ColumnSpan="2"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=PropertyName, Mode=TwoWay}" Width="130" /> 
      <GridViewColumn Header="Is Mandatory" Width="90" > 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox IsChecked="{Binding Path=IsMandatory, Mode=TwoWay}" HorizontalAlignment="Center" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

lavorato come un fascino, thx! – sean717

+0

Grazie a questo ha funzionato bene. Ma perché HorizontalContentAlignment non è impostato su "Center"? –

+1

@GordonSlysz Penso che stia succedendo c'è un contenitore "nascosto" all'interno di ogni colonna per gli oggetti listview. impostando "Centro" sulla casella di controllo, centralo all'interno del contenitore che non puoi vedere, ma quel contenitore è allineato a sinistra e viene automaticamente ridimensionato per adattarsi alla tua casella di controllo. Quindi sembra che la tua casella di controllo non sia centrata. Impostando ListViewItem's HorizontalContentAlignment su Stretch, questo contenitore si riempie per l'intera colonna, quindi ora quando la casella di controllo è centrata, sembra come previsto. – Nick

Problemi correlati