This article has been localized into Czech by the community.
Jak na to: ListView s názvy sloupců zarovnaných vlevo
V normální ListView jsou názvy sloupců v záhlaví zarovnány vlevo. Společnost Microsoft se z nějakého důvodu rozhodla ve výchozím nastavení v seznamu WPF názvy vystředit. V mnoha případech tak bude vaše aplikace vypadat odlišně ve srovnání s jinými aplikacemi systému Windows. Takto se zobrazí ListView ve výchozím nastavení WPF:
Zkusme to změnit a názvy sloupců se pokusme zarovnat doleva. Bohužel zde neexistují žádné přímé vlastnosti typu GridviewColumn umožňující změnu, ale naštěstí to neznamená, že to nejde provést.
Můžeme to provést pomocí značek Style, které ukazují na GridViewColumHeader, což je prvek používaný k zobrazení záhlaví GridViewColumn. Takto můžeme měnit vlastnost HorizontalAlignment. V tomto případě je výchozím stavem Center (na střed), ale můžeme jej snadno změnit na Left (vlevo), a dosáhnout přesně toho, co chceme:
<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>
Část kódu, který udělá všechnu tu práci za nás, je styl definovaný ve zdroji ListView:
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>
Lokální nebo globální styl
Definování Stylu v rámci samotného ovládacího prvku toto platí pouze pro tento konkrétní ListView. V mnoha případech můžete chtít, aby se dané stylování uplatnilo na všechny ListView v rámci stejného okna / stránky nebo možná i globálně v celé aplikaciTo lze zajistit zkopírováním stylu buď do prostředků okna, nebo prostředků aplikace. Zde je stejný příklad, kdy aplikujeme styl na celé okno namísto pouze konkrétního ListView:
<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>
V případě, že chcete použít další způsob zarovnání, například zarovnání vpravo, změníte jednoduše hodnotu stylu takto:
<Setter Property="HorizontalContentAlignment" Value="Right" />