C# Windows Phone 7:如何从窗口获取所有按钮?
如何从窗口获取所有按钮?(要将IsEnabled属性设置为false)您可以遍历所有控件。例如:C# Windows Phone 7:如何从窗口获取所有按钮?,c#,windows-phone-7,C#,Windows Phone 7,如何从窗口获取所有按钮?(要将IsEnabled属性设置为false)您可以遍历所有控件。例如: foreach (var ctrl in LayoutRoot.Children) { if (ctrl is Button) ((Button)ctrl).IsEnabled = false; } 当然,LayoutRoot是默认名称。如果需要,可以将其更改为另一个容器 编辑以允许嵌套面板的递归(在注释中提到) 您可以遍历所有控件。例如: foreach (var
foreach (var ctrl in LayoutRoot.Children)
{
if (ctrl is Button)
((Button)ctrl).IsEnabled = false;
}
当然,LayoutRoot
是默认名称。如果需要,可以将其更改为另一个容器
编辑以允许嵌套面板的递归(在注释中提到)
您可以遍历所有控件。例如:
foreach (var ctrl in LayoutRoot.Children)
{
if (ctrl is Button)
((Button)ctrl).IsEnabled = false;
}
当然,LayoutRoot
是默认名称。如果需要,可以将其更改为另一个容器
编辑以允许嵌套面板的递归(在注释中提到)
嗯,DisableAllButtons()有时可能会起作用,但一般来说是不够的。这是一个真实的例子。(经过一些简化。)
列表框
滚动查看器
边境
网格
滚动内容演示器
项目中心
虚拟化钉板
ListBoxItem
内容演示者
网格
文本块
文本块
按钮
ListBoxItem
内容演示者
网格
文本块
文本块
文本块
滚动条
网格
网格
重复按钮
拇指
矩形
重复按钮
如果您想要一个可靠的解决方案,那么子级使用而不是枚举面板
VisualTreeHelper类及其方法GetCildrenCount()和GetChild()。代码如下:
void DisableAllButtons(FrameworkElement fe)
{
if (fe is Button)
((Button)(fe)).IsEnabled = false;
int count = VisualTreeHelper.GetChildrenCount(fe);
for (int index = 0; index < count; ++index)
{
DisableAllButtons( (FrameworkElement)VisualTreeHelper.GetChild(fe, index) );
}
}
void disableallbutton(框架元素fe)
{
如果(fe为按钮)
((按钮)(fe)).IsEnabled=false;
int count=VisualTreeHelper.GetChildrenCount(fe);
对于(int index=0;index
嗯,DisableAllButtons()有时可能会起作用,但通常是不够的。这是一个真实的例子。(经过一些简化。)
列表框
滚动查看器
边境
网格
滚动内容演示器
项目中心
虚拟化钉板
ListBoxItem
内容演示者
网格
文本块
文本块
按钮
ListBoxItem
内容演示者
网格
文本块
文本块
文本块
滚动条
网格
网格
重复按钮
拇指
矩形
重复按钮
如果您想要一个可靠的解决方案,那么子级使用而不是枚举面板
VisualTreeHelper类及其方法GetCildrenCount()和GetChild()。代码如下:
void DisableAllButtons(FrameworkElement fe)
{
if (fe is Button)
((Button)(fe)).IsEnabled = false;
int count = VisualTreeHelper.GetChildrenCount(fe);
for (int index = 0; index < count; ++index)
{
DisableAllButtons( (FrameworkElement)VisualTreeHelper.GetChild(fe, index) );
}
}
void disableallbutton(框架元素fe)
{
如果(fe为按钮)
((按钮)(fe)).IsEnabled=false;
int count=VisualTreeHelper.GetChildrenCount(fe);
对于(int index=0;index
这难道不需要递归完成吗?例如,如果LayoutRoot
包含另一个面板
,其中包含按钮
s.@Praetorian:我假设用户只是指一个容器,但你是对的,如果该容器包含另一个容器,则需要递归执行@Tony-你有嵌套的容器吗?如果有嵌套的面板,请编辑答案。在编辑之前,你已经得到我的+1,所以不能有另一个:-)这不需要递归地完成吗?例如,如果LayoutRoot
包含另一个面板
,其中包含按钮
s.@Praetorian:我假设用户只是指一个容器,但你是对的,如果该容器包含另一个容器,则需要递归执行@Tony-你有嵌套的容器吗?如果有嵌套的面板,请编辑答案。在编辑之前,你已经获得了my+1,因此不能有另一个:-)