Xaml 对齐网格中右侧的控件

Xaml 对齐网格中右侧的控件,xaml,windows-phone-7,windows-phone-8,windows-store-apps,windows-phone-8.1,Xaml,Windows Phone 7,Windows Phone 8,Windows Store Apps,Windows Phone 8.1,我有一个3列的网格: <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> 我想让最后一列在右边对齐,靠近屏幕边缘。 目前,第三列出现在第二列之后不久。我不想通过像素宽度,而是自动计

我有一个3列的网格:

<Grid.ColumnDefinitions>
 <ColumnDefinition Width="Auto" />
 <ColumnDefinition Width="*" />
 <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

我想让最后一列在右边对齐,靠近屏幕边缘。 目前,第三列出现在第二列之后不久。我不想通过像素宽度,而是自动计算


我尝试在第三列属性HorizontalAlignment=“Right”中的元素上使用,但不幸的是,它不起作用。

如果网格中有相同类型的控件,则可以在
中为所有控件指定样式,仅当grid.column属性的值为2时才设置HorizontalAlignment属性(带触发器)。 但是,通过所有子级循环,检查每个子级的column属性,然后设置对齐方式更容易,如

foreach (Control ctrl in yourGrid.Children) {
    if(Grid.GetColumn(ctrl) == 2) ctrl.HorizontalAlignment = HorizontalAlignment.Right;
}

由于您的上一列具有
Auto
宽度,因此不需要将内容的
horizontalalignment
设置为
Right
。我的猜测是

  • 您的
    网格
    没有
    水平对齐
    拉伸
    (应为默认值),或者
  • 任何包含
    网格
    (a
    堆栈面板
    可能?)的内容都没有提供完整的宽度

  • 我可以确定是否可以检查XAML的其余部分。首先检查这两件事。如果这两件事没有帮助,请发布XAML的其余部分。

    如果您的网格位于Stackpanel内部,无论您做什么,它都只会将自身调整为Stackpanel的宽度


    如果最后一列定义为“自动”,则无法将其与屏幕右侧对齐。将第二列定义更改为“自动”,将最后一列定义更改为*

    网格本身是否跨越整个屏幕?是的,它跨越了整个集装箱?我不理解您的问题,那么您的代码中有哪些部分工作不符合预期?您能否发布一个屏幕截图,说明如何操作它的外观和第二个显示其外观的图像?而且,如果您的网格位于DataTemplate内,则必须将使用此模板的控件的HorizontalContentAlignment设置为拉伸。