2011-03-24 15 views
5
<Window x:Class="EffectsWindow.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     DataContext="{Binding RelativeSource={RelativeSource Self}}"> 

    <ListView ItemsSource="{Binding EffectsViewModel.Effects}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="200" Header="Effects"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock HorizontalAlignment="Center" 
             Text="{Binding Name}" 
             TextAlignment="Center" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 

</Window> 

Effect es simplemente un tipo que tiene una propiedad de nombre que devuelve una cadena, pero el texto aún no está centrado dentro de su celda.¿Cómo centrar un TextBlock dentro de una GridViewColumn? (Muestra xaml incluida)

¿Alguna idea sobre cómo solucionarlo?

Respuesta

5

se puede estirar la HorizontalContentAlignment para ItemContainerStyle

<ListView ItemsSource="{Binding EffectsViewModel.Effects}"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <!--...--> 
</ListView> 

actualización

Usted debe ser capaz de combinar los colores de las filas alternando con HorizontalContentAlignment como este. Yo probé y parece estar funcionando

<ListView ItemsSource="{Binding EffectsViewModel.Effects}" 
      AlternationCount="2"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      <Style.Triggers> 
       <Trigger Property="ItemsControl.AlternationIndex" Value="1"> 
        <Setter Property="Background" Value="LightBlue"></Setter> 
       </Trigger> 
       <Trigger Property="ItemsControl.AlternationIndex" Value="2"> 
        <Setter Property="Background" Value="LightGray"></Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <!--...--> 
</ListView> 
+1

Gracias, pero ese código centra todos ListViewItems, ¿verdad? Solo quiero que algunas columnas sean centrales, y otras que sean como están (alineadas a la izquierda). –

+1

@Joan Venge: centrará las columnas donde configure 'HorizontalAlignment =" Center "'; de lo contrario, se alineará a la izquierda (o lo que especifique) –

+0

Meleak, eso funciona. Gracias, pero hay un pequeño problema. Básicamente utilizo estos colores alternos: http://blogs.msdn.com/b/vinsibal/archive/2008/05/28/wpf-3-5-sp1-feature-alternating-rows.aspx El primer ejemplo de xaml allí, que también establece el estilo, por lo que no parecen funcionar para trabajar juntos. ¿Es posible combinar esto? –

0

Trate de usar una aplicación como snoop inspeccionar visualmente las propiedades de su aplicación y se puede ver que las cosas no se están alineando como se esperaba.

+0

Gracias, lo hice, pero todavía no me ayudó lo que causa que no esté centrado. –

Cuestiones relacionadas