C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏
2010-09-30 22:35:31 来源:WEB开发网在通常的网络游戏中,物品、装备、技能、快捷按钮等窗口中的图标都是可以相互拖放的,不同的栏目有着不同的限制,例如技能图标不能拖放到物品栏及装备栏中,且不是所有的魔法技能都可以拖放(如被动技能等);而非装备类的所有物品则无法拖放到角色的装备栏中。那么本节我将向大家讲解如何在本教程示例游戏中添加物品栏及装备栏,并实现它们之间双向物品交换的两种模式:拖放模式和双击模式。
首先制作物品栏。这里我使用的是官方的工具toolkit:ListBoxDragDropTarget,只需设置它的DragDrop.AllowDrop="True",那么它内部的ListBox类型容器中的所有Item将均可以被拖放。相关示例大家可以参考紫色永恒的这篇文章:最新Silverlight Toolkit中的Drag&Drop支持。
仅仅使用ListBox的默认配置还是与实际游戏中的物品栏容器显示相距太远,物品栏直观上给我们的印象是一个N*M的网格形容器,里面的对象是图标,对内对外都应能做到任意拖放。为了满足上述需求,我们还得在ListBox的模版改造上下些工夫。
默认情况下, ListBoxDragDropTarget内部拖放时并不能作用于virtualized容器(ListBox的默认容器),因此我们首先需要重写ItemsPanel 的ItemsPanelTemplate来实现ListBox内部子对象之间能相互拖放:
<toolkit:ListBoxDragDropTarget x:Name="dragDropTarget" window:DragDrop.AllowDrop="True">
<ListBox x:Name="listBox" ……>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</toolkit:ListBoxDragDropTarget>
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
- ››WPF学习笔记7. Resource
- ››WPF学习笔记6. RoutedEvent
- ››WPF学习笔记5. DependencyProperty
- ››WPF学习笔记3. Navigation
- ››WPF学习笔记之2. Dispatcher
- ››WPF学习笔记之1. Application
更多精彩
赞助商链接