Par défaut, le texte est centré sur les en-têtes d'un Listview code> ( pas fort> dans les cellules de contenu!), je me suis battu pour que cela reste aligné, voici ici Ce que j'ai proposé: <ListView.Resources>
<DataTemplate x:Key="Templ">
<TextBlock HorizontalAlignment="Left" Text="{Binding}"/>
</DataTemplate>
</ListView.Resources>
...
<GridViewColumn HeaderTemplate="{StaticResource Templ}">File</GridViewColumn>
3 Réponses :
Définir le Beefontainerstyle à Un style qui définit horizontalContentalIntialment à gauche :
<ListView.Resources>
<DataTemplate x:Key="Templ">
<TextBlock HorizontalAlignment="Left" Text="{Binding}"/>
</DataTemplate>
<Style x:Key="HeaderStyle" TargetType="GridViewColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn HeaderTemplate="{StaticResource Templ}" HeaderContainerStyle="{StaticResource HeaderStyle}">File</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
Voici une propriété attachée pour définir l'alignement du contenu de l'en-tête:
#region HeaderContentAlignment
/// <summary>Gets a <see cref="GridViewColumn"/>'s header content alignment.</summary>
[Category("Common")]
[AttachedPropertyBrowsableForType(typeof(GridViewColumn))]
public static HorizontalAlignment GetHeaderContentAlignment(GridViewColumn gridViewColumn)
{
return (HorizontalAlignment)gridViewColumn.GetValue(HeaderContentAlignmentProperty);
}
/// <summary>Sets a <see cref="GridViewColumn"/>'s header content alignment.</summary>
public static void SetHeaderContentAlignment(GridViewColumn gridViewColumn, HorizontalAlignment value)
{
gridViewColumn.SetValue(HeaderContentAlignmentProperty, value);
}
/// <summary>Indicates a <see cref="GridViewColumn"/>'s <see cref="GridViewColumn.HeaderContainerStyle"/>.</summary>
public static readonly DependencyProperty HeaderContentAlignmentProperty =
DependencyProperty.RegisterAttached(
"HeaderContentAlignment",
typeof(HorizontalAlignment), // type
typeof(GridViewExtensions), // containing static class
new PropertyMetadata(HorizontalAlignment.Center, OnHeaderContentAlignmentChanged)
);
private static void OnHeaderContentAlignmentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
OnHeaderContentAlignmentChanged((GridViewColumn)d, (HorizontalAlignment)e.NewValue);
}
private static void OnHeaderContentAlignmentChanged(GridViewColumn gridViewColumn, HorizontalAlignment alignment)
{
Style style;
if (ColumnHeaderAlignments.TryGetValue(alignment, out style) == false)
{// style NOT created -> create, cache
style = new Style(typeof(GridViewColumnHeader));
style.Setters.Add(new Setter(Control.HorizontalContentAlignmentProperty, alignment));
ColumnHeaderAlignments.Add(alignment, style);
}
gridViewColumn.HeaderContainerStyle = style;
}
/// <summary>cache [HorizontalAlignment]: [Style]</summary>
static readonly Dictionary<HorizontalAlignment, Style> ColumnHeaderAlignments = new Dictionary<HorizontalAlignment, Style>(4);
#endregion HeaderContentAlignment
Cela a bien fonctionné, merci. Cependant, j'ai ajouté style.basedon = application.current.tryFindresource (typeof (gridviewcolumnhea der)) comme style; code> afin d'augmenter mon style existant sans le remplacer.
Cela peut aider quelqu'un d'autre, comme je me débattais aussi, le meilleur moyen est de définir le style de gridviewcolumn.
Vous pouvez définir un style à appliquer à tous les en-têtes de colonne comme ci-dessous P>
<GridViewColumn Header="Something">
<GridViewColumn.HeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>
</GridViewColumn.HeaderContainerStyle>
</GridViewColumn>