WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game T... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏

 2010-09-30 22:35:31 来源:WEB开发网   
核心提示: 问题又来了,StackPanel仅能实现水平或竖直方向上的子控件排列,C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏(2),仔细想想,要是它能折行,例如:<Items><ItemCode

问题又来了,StackPanel仅能实现水平或竖直方向上的子控件排列,仔细想想,要是它能折行,不也是一个网格吗?既要Panel类型,又要具备折行功能,当然非WrapPanel莫属。下面只需将<StackPanel />换成<toolkit:WrapPanel Orientation="Horizontal" />即可。同时,我们还必须让该ListBox背景透明且去掉它的滚动条:Background="Transparent" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"才算完美。

物品栏界面制作完了,如何对它内部进行物品显示呢?这里需要用到ObservableCollection<QXIcon>对象作为ListBox的子控件数据源,为什么选择ObservableCollection<>而不是List<>等普通列表对象呢?因为ObservableCollection<>在内部子对象变化时会即时提交反馈给界面执行重绘更新,而List则不会,大家不妨自行尝试一下,可以体会到ObservableCollection<>是相当优雅的。

接下来,在游戏中我为主角定义了一个属性记录它现有的所有物品代号,当初始化物品栏时,游戏将读取这些代号,并从xml中的物品详细资料中查出相应的数据,例如:

  <Items>
    <Item Code="0" Categoriy="1" IconCode="45" EquipCode="0" Name="武威之逐日衣" Description="★★★★☆闪避很高" Value="0,0,0,0,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"></Item>
    <Item Code="1" Categoriy="1" IconCode="46" EquipCode="0" Name="剑影风纱" Description="很漂亮哦,防御很高" Value="0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0,0,0"></Item>
    <Item Code="2" Categoriy="0" IconCode="47" EquipCode="0" Name="灭神之刃" Description="小心,很容易秒杀" Value="0,1450,8044,10,10,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0"></Item>
    <Item Code="3" Categoriy="0" IconCode="48" EquipCode="1" Name="幻影狂刀" Description="速度极快,杀人无数" Value="0,300,400,10,10,0,-200,0,0,0,0,0,0,0,0,20,0,0,0,0,0"></Item>
    <Item Code="4" Categoriy="2" IconCode="49" EquipCode="0" Name="腰带1" Description="作者无敌懒" Value="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"></Item>
<Item Code="5" Categoriy="2" IconCode="50" EquipCode="1" Name="腰带2" Description="作者无敌懒" Value="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"></Item>
……
</Items>

上一页  1 2 3 4  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接