26

I have a Windows Phone / XAML Grid composed by 3 columns. In particular, I want the third column to be aligned to the very right side of the screen.

<Grid Background="Transparent" Margin="0,3">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

    <Image Grid.Column="0" x:Name="Marker" Width="60" Height="60" VerticalAlignment="Center" Stretch="Uniform" HorizontalAlignment="Center"/>
    <TextBlock Grid.Column="1" x:Name="Name" TextAlignment="Left" VerticalAlignment="Center" Margin="20,0" />
    <Image Grid.Column="2" x:Name="Selected" Width="48" Height="48"  VerticalAlignment="Center" Stretch="Uniform" HorizontalAlignment="Center"/>
 </Grid>

The result, instead, is this:

enter image description here

When it should be like this:

enter image description here

Filburt
  • 17,626
  • 12
  • 64
  • 115
TheUnexpected
  • 3,077
  • 6
  • 32
  • 62

4 Answers4

31

As you mentioned its an ItemTemplate of ListBox, what you can do is set HorizontalContentAlignment to Stretch.

    <ListBox>
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>
Rohit Vats
  • 79,502
  • 12
  • 161
  • 185
2

Try with this :

<Grid Background="Transparent" Margin="0,3">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
    <StackPanel Orientation="Horizontal">
        <Image x:Name="Selected" Width="48" Height="48"  VerticalAlignment="Center" Stretch="Uniform" HorizontalAlignment="Center"/>
        <TextBlock x:Name="Name" TextAlignment="Left" VerticalAlignment="Center" Margin="20,0" />
    </StackPanel>
    <Image Grid.Column="1" x:Name="Selected" Width="48" Height="48"  VerticalAlignment="Center" Stretch="Uniform" HorizontalAlignment="Right"/>
 </Grid>
har07
  • 88,338
  • 12
  • 84
  • 137
0

Try HorizontalAlignment="Stretch" in Grid.

mrzli
  • 16,799
  • 4
  • 38
  • 45
  • Using a ListView instead of a ListBox may make life earier for multi column lists. – RudolfJan Mar 09 '18 at 12:49
  • This is standard stuff. Look up a tutorial on ListViews, e.g. http://www.blackwasp.co.uk/WPFListView.aspx gives you a nice example. I always use ListView or DataGrid for tables. – RudolfJan Feb 15 '19 at 16:58
0

I had same problem and it was fixed after removing the stackpanel