Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)
2019独角兽企业重金招聘Python工程师标准>>>
在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示
在Silverlight+WCF 新手实例 象棋 主界面-棋谱-布局写谱(三十六)中,我们完成下棋双方的棋谱显示,这节,我们为观众增加棋子列表:
观众进入房间后,第一时间当然也要获取棋步列表了,不然进来干麻呢?你当这是聊天室啊,光聊天不看棋。
首先,当然是要在服务端添加一个获取棋步列表的接口方法了:
WCF服务端,IService.cs:
/// 服务端方法接口 by 路过秋天
/// </summary>
[ServiceContract(CallbackContract = typeof (ICallBack))]
public interface IService
{
// ...省略N行代码...
[OperationContract]
System.Collections.Generic.List < MoveStep > GetMoveStepList( int roomID); // 获取棋步列表
// ...省略N行代码...
}
我们返回的是一个泛型的List,这个得注意了。
接着我们来实现这个方法,回到IService.svc.cs:
{
// ...省略N行代码...
public List < MoveStep > GetMoveStepList( int roomID)
{
return roomList[roomID].StepList;
}
}
看,每次我们服务端代码都很简短,就一行。
服务端轻松轻松写完了,我们编绎一下,更新服务引用。
跟着我们回到客户端ChessManual.xaml.cs,在页面加载时,我们要调用获取一下列表:
整个页面代码不多,就全复制了:
{
public ChessManual()
{
InitializeComponent();
App.client.GetMoveStepListCompleted += new EventHandler < GameService.GetMoveStepListCompletedEventArgs > (client_GetMoveStepListCompleted);
App.client.GetMoveStepListAsync(App.player.RoomID);
}
void client_GetMoveStepListCompleted( object sender, GameService.GetMoveStepListCompletedEventArgs e)
{
// 获取完棋谱后,这里循环调用Add就可以了
}
public void Add(GameService.MoveStep step)
{
lbChessManual.Items.Add(step.ID + " : " + step.Name);
lbChessManual.SelectedIndex = lbChessManual.Items.Count - 1 ;
lbChessManual.UpdateLayout();
lbChessManual.ScrollIntoView(lbChessManual.SelectedItem);
}
}
接着我们要实现把获取到的列表Add到棋谱区去了,可是,这个时候我们发现一个问题,上图:
看到Result出来的提示没有,我们返回的是一个List,结果返回了个System.Collections.ObjectModel.ObservableCollection
这是咋回事呢?我们一直返回Dictionary都好好的,咋返回个List就成这个样子了,大伙摸急,方法是有的:我们看下图说:
1:对着引用的GameService右键:
2:我们选中配置服务引用:
3:从上图我们看到了集合类型,默认是那个ObservableCollection了的,于是我们选一下下拉框看看:
看到了有List了吧,选中它,确定,系统会自动重新更新引用,就OK了,不另外截图把e.Result的提示截出来了:
于是,我们重新回到棋谱区,继续完成我们的代码:
{
// 获取完棋谱后,这里循环调用添加就可以了
if (e.Result != null && e.Result.Count > 0 )
{
foreach (GameService.MoveStep step in e.Result)
{
lbChessManual.Items.Add(step.ID + " : " + step.Name);
}
}
}
OK,到此,观众就可以获取到棋步列表了。我们F5运行看下效果:
OK,观众进来的时候有棋谱了,可是观众人棋盘还是初始状态的呢??
这个嘛,我们只要把棋谱从头到尾播放一次,状态自然就跟下棋者的一样了;
我们留到下节解说,本节就点到为止了。
转载于:https://my.oschina.net/secyaher/blog/274360
Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)相关推荐
- Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放-结局(四十)
在线演示地址: Silverlight+WCF 新手实例 象棋 在线演示 在Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放(三十九)中,我们实现了用户的棋谱回放,在文章的下面,我们 ...
- Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放(三十九)
在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 本节完后,同时会更新Silverlight+WCF 新手实例 象棋 专题索引,并顺路提供第八阶段源码 在Silverlight+ ...
- Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)
在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 演示已更新到此节介绍:Silverlight+WCF 新手实例 象棋 介绍III(二十三) 本节连着Silverlight+WC ...
- Silverlight+WCF 新手实例 象棋 主界面-事件区-求和认输(三十二)
在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 事隔几篇,我们又回到事件区,继续其它两个按钮事件,来张图吧: 在Silverlight+WCF 新手实例 象棋 主界面-事件区- ...
- Silverlight+WCF 新手实例 象棋 主界面-事件区-返回退出(三十三)
在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 还是那张图: 本节实现返回大厅和退出系统: 一:返回大厅,其实很简单的说,就是转向房间列表了. 可是,转向前也有很多事情要处理的 ...
- Silverlight+WCF 新手实例 象棋 该谁下棋-B下A停(三十)
2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 上上一节,就是二十八节:Silverlight+WCF ...
- Silverlight+WCF 新手实例 象棋 棋子移动-规则[附加上半盘限制](十)
上上一节,我们对棋子的下半盘棋子做了所有的规则限制,因为我们下棋的总是用下半盘的棋子来下,总没人用上半盘棋来下那么高境界的吧. 不过这节简单追加点代码,让那些企图高境界的人士可以临时性的自己和自己下. ...
- Silverlight+WCF 新手实例 象棋 棋盘(二)
2019独角兽企业重金招聘Python工程师标准>>> 1.先新建一个和棋子相关的类库 打开VS2010后->新建->项目->Silverlight类库,名称就定为 ...
- Silverlight+WCF 新手实例 象棋 棋子(三)
2019独角兽企业重金招聘Python工程师标准>>> 棋盘上有棋子,棋子应该还有一些属性,按原始冲动新建一个棋子类. 上google翻译下棋子E文叫什么,查到了叫Chessman, ...
最新文章
- 清华大学发布首个自动图机器学习工具包 AutoGL,开源易用可扩展,支持自定义模型...
- 利用openssh实现chroot监牢
- MySQL快速查询的12条建议,让你不止会用select *
- Xshell操控kali-linux虚拟机
- SpringMVC的请求-文件上传-客户端表单实现
- Confirm的用法!
- 2-1 年会抽奖_实现分析
- 14英寸电脑长宽多少_华为MateBook 14 2020款 14英寸轻薄笔记本王者升级
- 链上合约(On-chain) 和 链下合约(Off-chain) 是什么 区别
- java 文件上传终止_java文件上传
- 优雅降级实现IE8的transform平移属性
- ajax 传参json字符串
- Oracle 18c十大新特性
- 微软亚洲研究院全球院友线上欢聚,共话新春
- Java毕设项目房地产管理系统登录计算机(附源码+系统+数据库+LW)
- python里float什么意思_Python中的float是什么意思,小白求答?
- linux罗马数字1到10怎么打,罗马数字1到10怎么打
- 从特斯拉召回事件,窥探OTA汽车进化真面目
- YY客网络广播 内测进行中!
- 练习-Java类和对象之对象组合之求圆锥体表面积
热门文章
- ubuntu vsftpd虚拟用户配置/ubuntu12.04上搭建vsftpd服务示例linux
- 提高C++性能的编程技术笔记:虚函数、返回值优化+测试代码
- Shell脚本示例代码
- OpenCV中的内存泄漏检测
- vc6静态库的生成和调用
- word自动消除html标签,清理Word生成HTML的冗余;清理与清除HTML标签
- oracle1core,Oracle core06_latchlock
- pxe linux 配置文件,Linux PXE 部署
- java 写入mysql blob_java 读取写入 mysql blob
- 傻瓜式动画制作软件_一个傻瓜版的动画制作软件——万彩动画大师