2023年7月19日发(作者:)
c#WPF循环遍历控件进⾏绑定数据当wpf界⾯上有很多控件需要绑定值的时候,新新⼿⼀般是 =ng();对于没有接触过MVVM的⼈来说,ViewModel还是有点学习成本的,下⾯的⽅法是我以前项⽬上所使⽤的,这⾥记录下,也⽅便⾃⼰以后再次使⽤,废话不多说,直接上代码,肯定有很多不好的地⽅,因为我也是新⼿,请指教,谢谢前端 请注意,StackPanel 为布局控件,当然其他的布局控件也是可以的,x:Name命名没有啥要求,但是,控件的 X:Name命名⼀定要注意,以控件缩写加下划线再加DTO⾥的字段,否则后⾯绑定不上。后台ic class TestDTO: BaseDTO{ public string One { get; set; } public Boolean Two { get; set; } public DateTime Three { get; set; } public int Four { get; set; }}TestDTO dTO = new TestDTO { One = "one_TextBlock", Two = false, Three = , Four = 4 }; (dTO, _en);要继承由于没有连接数据库,所有数据都是直接测试数据,Fill⽅法就可以将TestDTO中的数据绑定到界⾯上了 如下: public int Index { get; set; } public int PageSize { get; set; } public override string ToString() { JsonSerializerSettings settings = new JsonSerializerSettings(); tSettings = new Func(() => { //rmatHandling = oftDateFormat; rmatString = "yyyy-MM-dd HH:mm"; ting = ed; //空值处理 lueHandling = ; return settings; }); return izeObject(this); } 要引⼊ using ; /// /// 表单填充 /// /// /// /// protected void Fill(T Element, UIElementCollection UIElement) { Element(izeObject(Element), UIElement); }继承 /// /// 将页⾯元素填充到DTO的json格式对象中,需要什么控件待补充 /// /// /// private void SetElementValue(JObject jobj, UIElement element) { if (element is TextBox) { TextBox textBox = element as TextBox; if (r().StartsWith("txt_")) { jobj[e("txt_", )] = (); } } if (element is TextBlock) { TextBlock textBlock = element as TextBlock; if (r().StartsWith("txb_")) { jobj[e("txb_", )] = (); } } if (element is CheckBox) { CheckBox checkBox = element as CheckBox; if (r().StartsWith("chk_")) { jobj[e("chk_", )] = ked; } } if (element is PasswordBox) { PasswordBox passwordBox = element as PasswordBox; if (r().StartsWith("pwd_")) { jobj[e("pwd_", )] = rd; } } if (element is DatePicker) { DatePicker datePicker = element as DatePicker; if (edDate != null) { jobj[e("dpk_", )] = edDate; } } if (element is Grid) { //递归拿到内容 (ConvertToString((element as Grid).Children)); } if (element is StackPanel) { (ConvertToString((element as StackPanel).Children)); } if (element is WrapPanel) { (ConvertToString((element as WrapPanel).Children)); } if (element is DockPanel) { (ConvertToString((element as DockPanel).Children)); } if (element is Border) { Border b = element as Border; SetElementValue(jobj, ); } if (element is ComboBox) { ComboBox comboBox = element as ComboBox; if (r().StartsWith("cbx_")) { if (jobj != null && jobj[e("cbx_", )] != null) { edItem = jobj == null || jobj[e("cbx_", )] == null ? "" : jobj[e("cbx_", )]; } else { ($"数据集中没有[{e("cbx_", )}]字段,⽆法填充"); } } } } /// /// 将结果集的字符串形式填充到指定容器内的规范元素上 /// /// 需要填充的结果集 /// 传⼊的控件集 public void FillToElement(string result, UIElementCollection uIElementCollections) { JObject JResult = alizeObject(result); foreach (UIElement item in uIElementCollections) { ExplainElement(JResult, result, item); } } /// /// 将结果集的字符串形式填充到指定容器内的规范元素上 /// /// 需要填充的结果集 /// 传⼊的控件集 public void FillToElement(string result, UIElement uIElementCollection) { JObject JResult = alizeObject(result); ExplainElement(JResult, result, uIElementCollection); } /// /// 将JSON 元素解释道具体的控件上 /// /// /// /// private void ExplainElement(JObject JResult, string result, UIElement element) { if (element is TextBox) { TextBox textBox = element as TextBox; if (r().StartsWith("txt_")) { if (JResult != null && JResult[e("txt_", )] != null) { = JResult == null || JResult[e("txt_", )] == null ? "" : JResult[e("txt_", )].ToString(); } else { ($"数据集中没有[{e("txt_", )}]字段,⽆法填充"); } } } if (element is TextBlock) { TextBlock textBlock = element as TextBlock; if (r().StartsWith("txb_")) { if (JResult != null && JResult[e("txb_", )] != null) { = JResult == null || JResult[e("txb_", )] == null ? "" : JResult[e("txb_", )].ToString(); } else { ($"数据集中没有[{e("txb_", )}]字段,⽆法填充"); } } } if (element is Label) { Label label = element as Label; if (r().StartsWith("lbl_")) { if (JResult != null && JResult[e("lbl_", )] != null) { t = JResult == null || JResult[e("lbl_", )] == null ? "" : JResult[e("lbl_", )].ToString(); } else { ($"数据集中没有[{e("lbl_", )}]字段,⽆法填充"); } } } if (element is CheckBox) { CheckBox checkBox = element as CheckBox; if (r().StartsWith("chk_")) { bool ischeck = false; if (JResult != null && JResult[e("chk_", )] != null) { se(JResult[e("chk_", )].ToString(), out ischeck); ked = ischeck; } else { ($"数据集中没有[{e("chk_", )}]字段,⽆法填充"); } } } if (element is Grid) { Grid grid = element as Grid; FillToElement(result, en); } if (element is StackPanel) { StackPanel stack = element as StackPanel; FillToElement(result, en); } if (element is WrapPanel) { WrapPanel wrap = element as WrapPanel; FillToElement(result, en); } if (element is DockPanel) { DockPanel dock = element as DockPanel; FillToElement(result, en); } if (element is Border) { Border border = element as Border; ExplainElement(JResult, result, as UIElement); } if (element is ComboBox) { ComboBox comboBox = element as ComboBox; if (r().StartsWith("cbx_")) { if (JResult != null && JResult[e("cbx_", )] != null) { edItem = JResult == null || JResult[e("cbx_", )] == null ? "" : JResult[e("cbx_", )]; } else { ($"数据集中没有[{e("cbx_", )}]字段,⽆法填充"); } } } }这⾥⾯才是重头戏,主要的作⽤就是将控件进⾏封装,依据控件的Name来处理控件并进⾏绑定数据
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689723760a281230.html
评论列表(0条)