请教下WPF窗体控件的问题

qq175265664 2015-02-03 05:39:38
请教下各位大哥大姐,如何给动态创建的GRID下的 StackPanel 的子控件赋值

是在控件创建成之后赋值
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lincolnandlinda 2015-02-04
  • 打赏
  • 举报
回复
使用Grid的引用遍历它的Children子控件
exception92 2015-02-04
  • 打赏
  • 举报
回复
也就是 在后台 指定grid或者stackpanel 的DataContext,通过setBinding方法 将值绑定到textblock或者其它,再作为子控件添加到stackpanel中。
exception92 2015-02-04
  • 打赏
  • 举报
回复
使用binding或者在创建成功之后 找到子控件赋值。
  • 打赏
  • 举报
回复
我给你举一个例子。比如说你的Grid下边有一个“加载更多数据”的按钮,但是你希望当已经加载了100条记录之后,让这个按钮失效(不再允许用户按下去了)。你是让你的的“加载更多数据”的后台代码去设置这个按钮的enable呢?还是后台代码根本不管这个约束呢? 当然是后者。后台代码根本不考虑什么约束问题。你只要将按钮的enable属性与表达式“Items.Count()<100”或者表达式“Items.Count()<n”绑定起来(可能需要自己写一个ValueConverter),这样来虽然在设计时需要搞懂 xaml 设计和数据绑定语法,但是你的代码是不需要围着千变万化的前端UI的变化而打转转的。 那样,你问这种问题的机会就少了。
  • 打赏
  • 举报
回复
实际上,任何前端开发都有这种问题。比较低级时,总觉得直接用代码去“动态创建”控件最为方便、感觉自己的代码“好强大”。实际这都是一个错觉。 好的设计模式,是代码尽量不依赖于控件,反而是控件绑定到代码。不论是wpf、silverlight、asp.net、html/javascript等前端程序开发,都是如此。一些框架控件已经可以自动根据代码(ViewModel)绑定集合、绑定属性、以及重复子控件中的属性。 如果一个前端开发工具没有这种功能,还停留在15年前的意识水平,那么你就可以选择新的、傻瓜式地绑定UI的工具了。
  • 打赏
  • 举报
回复
没看懂你具体问什么问题。 其实尽量不要过度考虑什么“动态创建”的问题。前端程序应该反过来考虑设计问题,以 MVVM 设计模式为准,你的大部分程序代码不应该依赖任何控件,相反地是大量界面依赖后台程序代码(也就是ViewModel对象的属性)。控件布局和内容,应该自动双向绑定到 ViewModel 对象上。坚持 MVVM 模式,你的代码才能清爽,程序才能不“绕”,扩展起来也非常方便。 唯一需要学习的,就是如何在 xaml 中将界面控件各个部分绑定到一个 ViewModel 的各个属性上的问题。包括绑定一个集合数据,以及集合中每一个单元作为子控件(模板中的控件)的ViewModel。 一开始,你觉得学习“白手起家,全都从低级的代码来控制控件,没有压力”,甚是有的人觉得写代码越多越关荣。其实这是一个陷阱。代码越少越好、越傻瓜越好。应该花多些时间学习前端数据绑定语法,尽量不要用你的代码去直接操作UI控件。你会很少提出这类问题,会得到真正的实惠。

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧