WPF编游戏系列 之五 数据绑定
在上一篇通过用户控件将重复使用的控件封装为一个控件组,大大减少了C#代码数量,本篇继续对该控件组进行数据绑定,节省为每个控件赋值的工作。对于数据绑定具体内容的在这里就不多说了,有许多相关资料可以参考,博客园的达人们肯定也有相关教程。
1. 创建一个GoodsInfo类,其中包括GoodsImage、GoodsPrice、GoodsQty、GoodsBuyImageTag 这四个属性。
using System; namespace XMarket { class GoodsInfo { public string GoodsImage { get; set; } public string GoodsPrice { get; set; } public string GoodsQty { get; set; } public string GoodsBuyImageTag { get; set; } } }
2. 使用{Binding Property} 为控件组增加绑定内容,再次打开GoodsElement.xaml控件,将GoodsImage、GoodsPrice、GoodsQty、GoodsBuyImageTag 绑定到相应的控件中。
... ... <StackPanel Orientation="Vertical" HorizontalAlignment="Center" Margin="5"> <Image Name="goodsImage" Height="80" Width="80" Margin="5"
Source="{Binding GoodsImage}"></Image> <TextBlock Name="goodsPrice" Margin="5"
Text="{Binding GoodsPrice}"></TextBlock> <TextBlock Name="goodsQty" Margin="5"
Text="{Binding GoodsQty}"></TextBlock> <Image Name="goodsBuy" Source="image/add.png" Height="25" Width="25" Cursor="Hand" Margin="5" Tag="{Binding GoodsBuyImageTag}"> <Image.ToolTip>Add Quantity</Image.ToolTip> </Image> </StackPanel> ... ...
3. 数据绑定完毕,再回到上一篇(WPF编游戏系列 之四 用户控件)“3.” 部分的C#进行优化。
… …
for (int i = 0; i < num; i++) { //创建一个goodsinfo实例 GoodsInfo goodsinfo = new GoodsInfo();
//为goodsinfo中的属性赋值 goodsinfo.GoodsImage = "image/shop/" + res[i, 2].ToString(); goodsinfo.GoodsPrice = "Price: $" + res[i, 6].ToString(); goodsinfo.GoodsQty = "Quantity: " + res[i, 5].ToString(); goodsinfo.GoodsBuyImageTag = res[i, 0].ToString() + "-" +
res[i, 5].ToString() + "-" + res[i, 6].ToString(); //创建goods控件组 GoodsElement goods = new GoodsElement();
//这里只需将goodsinfo赋给DataContext即可,就不用再对Text、Source等赋值了 goods.DataContext = goodsinfo;
… …
}
另,有个问题,在3中从数据库读取的物品信息都是通过for循环中同一个goodsinfo创建出来的,如果在界面中修改一个物品的数量,并同时将结果体现在Quantity的Textblock中,就会导致结果只在最后一个物品中体现,怎么样能使不同的物品创建不同的goodsinfo实例,或者有什么其他方法解决。
待续 … …
作者:李敬然(Gnie)
出处:{GnieTech} (http://www.cnblogs.com/gnielee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
出处:{GnieTech} (http://www.cnblogs.com/gnielee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述