2014-01-05 5 views
14

У меня есть телефон Windows/XAML Grid, состоящий из 3 столбцов. В частности, я хочу, чтобы третий столбец был выровнен по правой стороне экрана.Выровнять колонку сетки справа

<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> 

В результате, вместо того, это:

enter image description here

Когда это должно быть так:

enter image description here

+0

Есть нет 'HorizontalAlignment = "Right"'? –

+1

Да, и это не работает :( – TheUnexpected

+0

Является ли эта сетка частью 'ItemTemplate'' ListBox', потому что я не вижу других элементов в Grid. –

ответ

18

Как вы упомянули его ItemTemplate ListBox, вы можете установить HorizontalContentAlignment в Stretch.

<ListBox> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 
2

Попробуйте с этим:

<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> 
1

Попробуйте HorizontalAlignment="Stretch" в Grid.

+0

Использование ListView вместо ListBox может сделать жизнь более длинной для нескольких столбцов. – RudolfJan

0

У меня была такая же проблема, и она была установлена ​​после удаления StackPanel

Смежные вопросы