好的,为了总结我在做什么,我是一个想要为Microsoft Surface开发基于回合的网格场战略游戏的大学组的一部分。我的问题不涉及基于触摸控制的任何问题,所以不要担心。这个游戏将使用WPF和.NET 3.5 Framework为Surface开发。将一个2维图像数组绑定到网格
该游戏的战斗系统将与流行游戏如火焰徽章,最终幻想战术和魔界战记2非常相似,其中所有单位将被放置在一个表示他们的位置的网格场中,并且也将用于单位移动和攻击范围。
现在,看到这个游戏将大量基于网格,我想最好的方法是使用标准的System.Windows.Controls.Grid,并根据需要定义许多行和列。 XAML代码。
实施例:
<Grid Background="{StaticResource WindowBackground}" x:Name="GridField" ShowGridLines="True" Width="1024" Height="768">
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition Height="32"/>
<RowDefinition Height="32"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32"/>
<ColumnDefinition Width="32"/>
<ColumnDefinition Width="32"/>
</Grid.ColumnDefinitions>
此代码将创建并显示与每个网格块在大小为32×32 3×3的网格。
现在,假设有一个名为Unit的完全开发的类,它将包含代表Unit的所有信息,包括名称和表示该单元的Image。为了争论,假定设备的图像是正确的大小和格式,以便在分配给网格时正确显示。
对于我团队的当前计划,我们打算用C#代码中的数组表示当前在该领域的所有单元。
实施例:
public Unit[,] allUnits = new Unit[3,3];
凡[3,3]表示的网格定义列数和行数。
现在,一般到个别项目分配到电网,你必须定义项目位置显式地说是这样的:
Grid.Row =“1” Grid.Column =“1”来源=“{ Binding Unit.Picture}“
现在我知道这是不正确的语法,但我真的不关心这种方法,我的例子至少给出了它如何处理的想法。
所以,这里是我的问题:有没有什么办法可以直接将我的2维单位阵列绑定到我定义的网格,而无需定义每个元素位置?例如:如果有一种方法可以将网格本身表示为数组,例如GridField [1,2]将表示Grid.Row =“1”Grid.Column =“2”(< - 可能是倒退),那么我所要做的就是说GridField [1,2] = Unit [1,2] .Picture或类似的东西。
我不确定有一种方法可以做到这一点,所以这就是为什么我要问有关如何做到这一点的最佳方法。
总结:我想知道如何直接将我的网格绑定到我的2维单位数组,以便网格成为我数组中单位的可见表示。我想知道如何做到这一点,而不必明确定义每个网格块的内容指向正确的数组位置。我宁愿不让每个单位定义它的位置,因为这是2维数组的目的,但是如果这是不可避免的。
我希望这个问题有一个可行的解决方案,因为如果没有下一步将涉及到我创建自己的网格,这将是一个痛苦。
对于任何拼写错误和此问题的长度,我表示歉意,但我想让自己尽可能清晰。
谢谢您的时间和建议, FrostFlame64
这很好。我必须通过定义自己的convert方法将我的Unit类集合转换为UIElements集合来完成测试集合的工作,但它似乎对我的测试数据正常工作。谢谢! – FrostFlame64 2011-03-28 17:19:55