0

对于 Windows 8 应用程序,我需要在图像上放置一个按钮列表。每个按钮都有 CoordinateX 和 CoordinateY 属性。我使用 gridView 绑定到按钮列表。我需要得到如下结果:

在此处输入图像描述

这是我的代码:

<Grid HorizontalAlignment="Left" VerticalAlignment="Top" >
     <Canvas>  
         <Image Source="ms-appx:///Assets/red.png" Stretch="None"  ></Image>

          <GridView ItemsSource="{Binding Buttons}" 
                    SelectionMode="None" IsSwipeEnabled="false"  IsItemClickEnabled="True" ItemClick="Button" Padding="0">                            
          <GridView.ItemTemplate>
                <DataTemplate>
                    <Button Width="194" Height="51" Background="Gray" Canvas.Left="{Binding CoordinateX}" Canvas.Top="{Binding CoordinateY}"></Button>                    
                </DataTemplate>
          </GridView.ItemTemplate>
          </GridView>                      
     </Canvas>
</Grid>

但这是我运行应用程序后得到的:

在此处输入图像描述

4

1 回答 1

0

可能在运行时,在为 GridView 中的项目设置 X 和 Y 坐标之前,GridView 本身已应用其属性。由于 1) GridView 旨在用于组织控制和 2) 您没有强制 Grid 填充视图空间

你剩下的是一个 GridView ,它可以按照自己的意愿行事,并限制其项目符合您的样式的能力,如果样式试图强制项目集合位于控件的边界之外。

您可以尝试设置 GridView 的水平对齐属性,但即使它碰巧起作用,使用组织较少的内容控件(如更基本的 ItemsPresenter)可能是更好的选择。

您最终会使用哪个控件...确保检查/设置 Horizo​​ntalContentAlignment 和 VerticalContentAlignment 属性(如果存在)。

于 2012-12-08T16:51:06.653 回答