I have a List with a DataTemplate that shows the text and a "x" button next to it. I want the "X" btn to be shown at the extreme right, so they all appear in same place. The XML I use is :
<ListBox Name="seiveListBox" ItemsSource="{Binding}" MinWidth="80" Height="120" ScrollViewer.VerticalScrollBarVisibility="Visible" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" />
<Button Name="delSeiveFromListBtn" Content="X" ToolTip="Delete" Margin="8, 0, 0, 0" Click="delSeiveFromListBtn_Click"></Button>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
I tried adding Grid inpalce of StackPanel, but wasn't successful.
How do I design it or align the "x" in the List to be at extreme right on each item.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With