wpf中tabcontrol下有不同tabitem,遍历tabitem中的控件

openrd 2014-07-23 05:07:37
小弟刚接触wpf,发现有些方式和winform下的不太一样。现在我有一个TabControl,Tabcontrol下有不同的tabitem,怎么样才能遍历所有tabitem中的所有控件?
eg: foreach(UIElement Pageelment in myTabControl.Items)
{
TabItem tabtemp = (TabItem)Pageelment;
foreach(UIElement control in tabtemp )
{
//清空控件的赋值
}
}
但是这样第二个foreach有错误。而且第一个foreach获取的Pageelment 是每一个tabItem的表头。
...全文
1205 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_30529283 2016-09-10
  • 打赏
  • 举报
回复
我解决了,楼主呢,这里主要是因为其他非选中的选项卡下的控件被隐藏了,所以找不到
qq_30529283 2016-09-10
  • 打赏
  • 举报
回复
exception92 2014-07-24
  • 打赏
  • 举报
回复
引用 5 楼 openrd 的回复:
引用 4 楼 duanzi_peng 的回复:
[quote=引用 2 楼 openrd 的回复:] 这遍历得到的也是每一个tabitem吧,经过测试和我的外层循环效果一样啊。得到的是每一个tabitem。不是每一个tabitem下的控件哦。
content 就是里边的控件!!!
我每个tabitem下都有一个grid,莫非是这个原因?item.Content得到的结果明明是每个tabitem的header名称啊。[/quote] 扯淡,, <TabItem Header="item2"> item2才是header的名称。 Content是获取它的内容控件,如果是grid 那就 if (item.Content is Grid)了。
openrd 2014-07-24
  • 打赏
  • 举报
回复
引用 3 楼 hbu_pig 的回复:
找子控件要一层级一层级的找。。。如果是Panel就获取Children
是的,我现在的问题是进了一层,就进不去下一层了。
openrd 2014-07-24
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
引用 2 楼 openrd 的回复:
这遍历得到的也是每一个tabitem吧,经过测试和我的外层循环效果一样啊。得到的是每一个tabitem。不是每一个tabitem下的控件哦。
content 就是里边的控件!!!
我每个tabitem下都有一个grid,莫非是这个原因?item.Content得到的结果明明是每个tabitem的header名称啊。
exception92 2014-07-23
  • 打赏
  • 举报
回复
引用 2 楼 openrd 的回复:
这遍历得到的也是每一个tabitem吧,经过测试和我的外层循环效果一样啊。得到的是每一个tabitem。不是每一个tabitem下的控件哦。
content 就是里边的控件!!!
欢乐的小猪 2014-07-23
  • 打赏
  • 举报
回复
找子控件要一层级一层级的找。。。如果是Panel就获取Children
openrd 2014-07-23
  • 打赏
  • 举报
回复
这遍历得到的也是每一个tabitem吧,经过测试和我的外层循环效果一样啊。得到的是每一个tabitem。不是每一个tabitem下的控件哦。
exception92 2014-07-23
  • 打赏
  • 举报
回复

var temp = this.myTabControl.Items;
            foreach (TabItem item in temp) {
                if (item.Content is Button) {
                    MessageBox.Show((item.Content as Button).Content.ToString());
                }
            }

110,567

社区成员

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

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

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