How to right-align content in a DataTemplate? How to right-align content in a DataTemplate? wpf wpf

How to right-align content in a DataTemplate?


Here's my take on it, use a Grid the following way:

<ListBox ItemsSource="{Binding Items}"          Width="200" HorizontalContentAlignment="Stretch">    <ListBox.ItemTemplate>        <DataTemplate>            <Grid>                <Grid.ColumnDefinitions>                    <ColumnDefinition Width="*"/>                    <ColumnDefinition Width="Auto"/>                </Grid.ColumnDefinitions>                <TextBlock Grid.Column="0" Text="{Binding Data}"></TextBlock>                <Button Grid.Column="1" Content="x"></Button>            </Grid>        </DataTemplate>    </ListBox.ItemTemplate></ListBox>


If your item are supposed to be buttons then you have to specifiy HorizontalContentAlignment="Stretch".Here is the template I use for buttons with a cross on the right side:

    <DataTemplate x:Key="DeletableButtonCommandTemplate">    <Button Command="{Binding}" Margin="0,1" HorizontalContentAlignment="Stretch">        <Grid HorizontalAlignment="Stretch">            <Grid.ColumnDefinitions>                <ColumnDefinition Width="*"/>                <ColumnDefinition Width="18"/>            </Grid.ColumnDefinitions>            <TextBlock Text="{Binding Caption}" HorizontalAlignment="Center" Grid.Column="0"></TextBlock>            <shared:CrossButton Width="12" Height="12" Grid.Column="1"                                cal:Message.Attach="[Event Click]=[DeleteCommandSource($Datacontext)]"                                Visibility="{Binding Path=AssociatedObject.Owner, Converter={sharedConv:NotNullToVisibleConverter} }"  />        </Grid>    </Button></DataTemplate>