如何在 windows phone 8.0 中使用网格列在左侧和右侧设置项目
How to set items on left and right with grid column in windows phone 8.0
谁能说说怎么做:
在弹出窗口中,我有两个项目,一个是文本块,一个是图像,根据文本的大小,我需要将所有时间的文本放在左边,将图标放在右边,就像第二张图片一样。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" />
</Grid>
当第一列设置为自动时,第一个图像就像这样:
设置静态宽度时:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" />
</Grid>
设置后
我想设置动态值,而不是宽度的静态值。
您可以设置网格中元素的HorizontalAlignment
:
<Grid HorizontalAligment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" HorizontalAlignment="Right" />
</Grid>
这应该将图像放在列的右侧。您可能会发现您还必须告诉网格拉伸以填充它的容器。
或者,假设您的图标大小相同,您可以交换列定义:
<Grid HorizontalAligment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" />
</Grid>
以便第二列从其内容(图标)中获取宽度,第一列伸展以填充可用 space。
对于这类问题,您通常必须尝试两三件事才能获得您正在寻找的确切行为。
试试这个
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT" HorizontalAlignment="Left"/>
<Image Grid.Column="1" HorizontalAlignment="Right"/>
</Grid>
如果这是页面上的唯一内容,您可能还需要为 TextBlock 和 Image 设置垂直对齐方式。届时内容可能会出现在页面的中央。
谁能说说怎么做:
在弹出窗口中,我有两个项目,一个是文本块,一个是图像,根据文本的大小,我需要将所有时间的文本放在左边,将图标放在右边,就像第二张图片一样。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" />
</Grid>
当第一列设置为自动时,第一个图像就像这样:
设置静态宽度时:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" />
</Grid>
设置后
我想设置动态值,而不是宽度的静态值。
您可以设置网格中元素的HorizontalAlignment
:
<Grid HorizontalAligment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" HorizontalAlignment="Right" />
</Grid>
这应该将图像放在列的右侧。您可能会发现您还必须告诉网格拉伸以填充它的容器。
或者,假设您的图标大小相同,您可以交换列定义:
<Grid HorizontalAligment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT"/>
<Image Grid.Column="1" />
</Grid>
以便第二列从其内容(图标)中获取宽度,第一列伸展以填充可用 space。
对于这类问题,您通常必须尝试两三件事才能获得您正在寻找的确切行为。
试试这个
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEXT" HorizontalAlignment="Left"/>
<Image Grid.Column="1" HorizontalAlignment="Right"/>
</Grid>
如果这是页面上的唯一内容,您可能还需要为 TextBlock 和 Image 设置垂直对齐方式。届时内容可能会出现在页面的中央。