TOC

This article is currently in the process of being translated into Portuguese (~97% done).

O controle ListView:

How-to: ListView with left aligned column names

Em um ListView normal, os nomes das colunas são alinhados à esquerda, mas por algum motivo, a Microsoft decidiu centralizar os nomes por padrão no ListView do WPF. Em muitos casos, isso fará com que seu aplicativo fique fora de estilo em comparação com outros aplicativos do Windows. É assim que o ListView será exibido no WPF por padrão :

Vamos tentar mudar isso para nomes de coluna alinhados à esquerda. Infelizmente, não há propriedades diretas no GridViewColumn para controlar isso, mas felizmente isso não significa que não possa ser alterado.

Usando um estilo, direcionado ao GridViewColumHeader, que é o elemento usado para mostrar o cabeçalho de um GridViewColumn, podemos alterar a propriedade HorizontalAlignment. Neste caso, o padrão é Center, mas podemos mudá-lo para Left, para realizar o que queremos:

<Window x:Class="WpfTutorialSamples.ListView_control.ListViewGridViewSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ListViewGridViewSample" Height="200" Width="400">
    <Grid>
		<ListView Margin="10" Name="lvUsers">
			<ListView.Resources>
				<Style TargetType="{x:Type GridViewColumnHeader}">
					<Setter Property="HorizontalContentAlignment" Value="Left" />
				</Style>
			</ListView.Resources>
			<ListView.View>
				<GridView>
					<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
					<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
					<GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
				</GridView>
			</ListView.View>
		</ListView>
	</Grid>
</Window>

A parte que faz todo o trabalho para nós, é o estilo definido nos recursos do ListView:

<Style TargetType="{x:Type GridViewColumnHeader}">
					<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>

Estilo local ou global

Ao definir o estilo dentro do próprio controle, ele só se aplica a esse ListView específico. Em muitos casos, você pode querer aplicá-lo a todos os ListViews na mesma Janela / Página ou, talvez, até mesmo globalmente em todo o aplicativo. Você pode fazer isso copiando o estilo para os recursos da janela ou recursos do aplicativo. Aqui está o mesmo exemplo, onde aplicamos o estilo a toda a janela, em vez de apenas o ListView em particular:

<Window x:Class="WpfTutorialSamples.ListView_control.ListViewGridViewSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ListViewGridViewSample" Height="200" Width="400">
	<Window.Resources>
		<Style TargetType="{x:Type GridViewColumnHeader}">
			<Setter Property="HorizontalContentAlignment" Value="Left" />
		</Style>
	</Window.Resources>
	<Grid>
		<ListView Margin="10" Name="lvUsers">
			<ListView.View>
				<GridView>
					<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
					<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
					<GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
				</GridView>
			</ListView.View>
		</ListView>
	</Grid>
</Window>

Caso você queira outro alinhamento, por exemplo alinhamento certo, basta alterar o valor do estilo assim:

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

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!