Windows应用商店应用中的XAML网格中的图像重叠

时间:2014-02-26 04:49:24

标签: c# vb.net xaml windows-store-apps

我想知道是否有人可以指出我正确的方向。我想为Windows商店创建一个基本的纸牌游戏应用程序。我已经完成了多个应用程序,我对XAML网格和在单元格中放置图像非常熟悉。在纸牌游戏中,我将拥有与微软的Hearts游戏非常相似的设置(卡片位于底部,卡片相互重叠)。我的问题是我不知道如何使网格单元格中的图像相互重叠。有谁知道如何实现这一目标?感谢。

顺便说一句,如果解决方案需要代码,我知道VB.Net和C#。

1 个答案:

答案 0 :(得分:1)

您要找的是Grid.RowSpanGrid.ColumnSpan

例如:

考虑一个3x3 Grid(用X表示的空单元格):

X X X
X X X
X X X

现在考虑使用Grid.Row=0Grid.Column=1的元素。它将被渲染(O是一个填充的单元格。)

X O X
X X X
X X X

现在,如果我们增加该元素的RowSpanColumnSpan,但保持其RowColumn位置相同,我们正在创建一个更大的框,其顶部为将细胞留在同一位置。考虑Grid.RowSpan=2Grid.ColumnSpan=2

X O O
X O O
X X X

“框”锚定在1,0(x,y或列,行)位置,但延伸到下一个单元格,形成一个2x2子网格。

现在,考虑第二个元素Y。如果我们要使用上一张图并使用Y添加Grid.Row=1, Grid.Column=0, Grid.RowSpan=2, Grid.ColumnSpan=3,那么我们会得到:

X O O
Y Y Y
Y Y Y

请记住,Canvas是一个“堆栈”,因为最后绘制的对象位于顶部。

您可以使用此方法重叠网格中的不同元素。最后一个例子,因为它将更好地说明您可能正在寻找的卡重叠概念。

O := 
{
    Grid.Row=0, 
    Grid.Column=0, 
    Grid.RowSpan=2,
    Grid.ColumnSpan=2
}

Y := 
{
    Grid.Row=1, 
    Grid.Column=1, 
    Grid.RowSpan=2,
    Grid.ColumnSpan=2
}

首先绘制O,然后Y结果

O O X
O Y Y
X Y Y

首先绘制Y,然后O结果

O O X
O O Y
X Y Y

我相信你也可以手动修改Canvas.ZIndex,正如@ChrisShao所说。