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>