【问题标题】:Align Grid column to right将网格列向右对齐
【发布时间】:2014-01-05 13:43:30
【问题描述】:

我有一个由 3 列组成的 Windows Phone / XAML 网格。特别是,我希望第三列与屏幕的最右侧对齐。

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

结果却是这样的:

什么时候应该是这样的:

【问题讨论】:

  • 没有HorizontalAlignment="Right" 吗?
  • 是的,但它不起作用:(
  • 这个网格是ItemTemplateListBox 的一部分吗,因为我在网格中看不到其他项目。
  • 是的,它是一个用户控件,用于自定义 ListBox 上的每个项目
  • ListBoxItem 上将HorizontalContentAlignment 设置为Stretch。检查我的答案。

标签: wpf xaml windows-phone-7 grid


【解决方案1】:

正如您提到它是 ListBox 的 ItemTemplate,您可以将 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>
    

    【讨论】:

      【解决方案3】:

      在网格中尝试HorizontalAlignment="Stretch"

      【讨论】:

      • 使用 ListView 而不是 ListBox 可能会使多列列表的生命更早。
      • 这是标准的东西。查找有关 ListViews 的教程,例如blackwasp.co.uk/WPFListView.aspx 给你一个很好的例子。我总是对表格使用 ListView 或 DataGrid。
      【解决方案4】:

      我有同样的问题,删除堆栈面板后它已修复

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-07
        相关资源
        最近更新 更多