博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF怎么寻找在ItemTemplate内部的各种控件
阅读量:6324 次
发布时间:2019-06-22

本文共 3773 字,大约阅读时间需要 12 分钟。

有如下控件

 现要知道CheckBox是否选中,但是它是DataTemplate内部的控件,要如何访问到呢,MSDN上这样做的

所以方法如下

private childItem FindVisualChild
(DependencyObject obj) where childItem : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { DependencyObject child = VisualTreeHelper.GetChild(obj, i); if (child != null && child is childItem) return (childItem)child; else { childItem childOfChild = FindVisualChild
(child); if (childOfChild != null) return childOfChild; } } return null; } private void Button_Click(object sender, RoutedEventArgs e) { ListBoxItem lbitem = null; ContentPresenter myContentPresenter = null; DataTemplate myDataTemplate = null; CheckBox ck = null; TextBlock tb = null; for (int i = 0; i < lb.Items.Count; i++) { lbitem = (ListBoxItem)(lb.ItemContainerGenerator.ContainerFromItem(lb.Items[i])); myContentPresenter = FindVisualChild
(lbitem); myDataTemplate = myContentPresenter.ContentTemplate; ck = (CheckBox)myDataTemplate.FindName("ck", myContentPresenter) as CheckBox; if (ck.IsChecked == true) { tb = (TextBlock)myDataTemplate.FindName("tb", myContentPresenter) as TextBlock; MessageBox.Show(tb.Text); } } }

 功能实现...

今天又遇到一个不一样的,DataGrid

好吧,上源代码

 不错,我们要找的就是ck这个控件,并根据他是否选中来做一些业务处理,我主要是遍历,要获取某一行的checkbox是否被选中,请看这里

DataGridTemplateColumn _dataTemplate = dataGrid5.Columns[0] as DataGridTemplateColumn;            FrameworkElement element = null;            CheckBox ck=null;            for (int i = 0; i < dataGrid5.Items.Count-1; i++)            {                element = _dataTemplate.GetCellContent(dataGrid5.Items[i]);                ck=_dataTemplate.CellTemplate.FindName("ck",element) as CheckBox;                if (ck.IsChecked == true)                {                    MessageBox.Show(string.Format("StuName:{0}",(dataGrid5.Items[i] as Stu).StuName));                }            }

ok,又搞定...

转载于:https://www.cnblogs.com/HelloMyWorld/archive/2013/03/25/2981706.html

你可能感兴趣的文章
1202. [HNOI2005]狡猾的商人【贪心 或 并查集】
查看>>
BZOJ3251:树上三角形(乱搞)
查看>>
Android打开新的Activty并传递参数
查看>>
教你50招提升ASP.NET性能(二):移除不用的视图引擎
查看>>
vue 单页面 http stalled 的情况
查看>>
《互联网时代》告诉我的互联网简史(一)
查看>>
swift 获得手机IP(运营商IP和WiFi的IP)
查看>>
MSSQL中的日期减价法
查看>>
[BZOJ 2424][HAOI2010]订货(费用流)
查看>>
Ant调用Java中文显示乱码
查看>>
第一个
查看>>
[转载] extern "C"的用法解析
查看>>
node.js中stream流中可读流和可写流的使用
查看>>
LeetCode #3. Longest Substring Without Repeating Characters C#
查看>>
L2.十.break
查看>>
UItableview里面的header、footer
查看>>
SDWebImage
查看>>
(一)单例模式
查看>>
洛谷 P1070 道路游戏
查看>>
CSS之flex兼容
查看>>