对齐网格右侧的控件

时间:2015-04-26 11:29:12

标签: xaml windows-phone-7 windows-phone-8 windows-store-apps windows-phone-8.1

我有一个包含3列的网格:

<checkout_onepage_review translate="label">
    <label>One Page Checkout Overview</label>
    <!-- Mage_Checkout -->
    <remove name="right"/>
    <remove name="left"/>

    <block type="checkout/onepage_review_info" name="root" output="toHtml" template="checkout/onepage/review/info.phtml">
        <action method="addItemRender"><type>default</type><block>checkout/cart_item_renderer</block><template>checkout/onepage/review/item.phtml</template></action>
        <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/onepage/review/item.phtml</template></action>
        <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/onepage/review/item.phtml</template></action>
        <block type="checkout/cart_totals" name="checkout.onepage.review.info.totals" as="totals" template="checkout/onepage/review/totals.phtml"/>
        <block type="core/text_list" name="checkout.onepage.review.info.items.before" as="items_before" translate="label">
            <label>Items Before</label>
        </block>
        **<block type="core/text_list" name="checkout.onepage.review.info.items.after" as="items_after" translate="label">
            <label>Items After</label>
        </block>**
        <block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/>
        <block type="core/template" name="checkout.onepage.review.button" as="button" template="checkout/onepage/review/button.phtml"/>
    </block>
</checkout_onepage_review>

我希望最后一列对齐在靠近屏幕边缘的右侧。 目前,第三列在第二列之后很快发生。我不想以像素为单位传递宽度,而是自动计算。

我试图在第三列属性Horizo​​ntalAlignment =“Right”中使用元素,但遗憾的是它无效。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

如果网格中有相同类型的控件,则可以在<Grid.Resources>中为所有控件分配样式,仅当Grid.Column属性的值为2(带触发器)时才设置Horizo​​ntalAlignment属性。 但是循环遍历所有子节点并检查每个子节点的列属性然后设置对齐更容易,比如

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

答案 2 :(得分:0)

由于您的上一列的宽度为Auto,因此不必将内容HorizontalAlignement设置为Right。我猜是

  1. 您的Grid的{​​{1}}值不是HorizontalAlignement(应该是默认值),或者
  2. 包含Stretch(可能是Grid?)的任何内容都没有给它全宽。
  3. 我可以肯定我是否可以检查XAML的其余部分。首先检查这两件事。如果这些没有帮助,请发布您的XAML的其余部分。