Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Phone 7:如何从窗口获取所有按钮?_C#_Windows Phone 7 - Fatal编程技术网

C# Windows Phone 7:如何从窗口获取所有按钮?

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

如何从窗口获取所有按钮?(要将IsEnabled属性设置为false)

您可以遍历所有控件。例如:

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,因此不能有另一个:-)