Windows phone 7 使用C循环浏览屏幕上给定标记WP7的所有按钮#
我正在寻找一种简单的方法来循环浏览给定标签屏幕上的所有按钮。例如“foo”。我用的是WP7,用的是C。我对这个平台很陌生,所以对我放松点:PWindows phone 7 使用C循环浏览屏幕上给定标记WP7的所有按钮#,windows-phone-7,Windows Phone 7,我正在寻找一种简单的方法来循环浏览给定标签屏幕上的所有按钮。例如“foo”。我用的是WP7,用的是C。我对这个平台很陌生,所以对我放松点:P 谷歌搜索这类东西对我来说也不太合适——我想我的术语错了,所以任何关于这方面的提示都将不胜感激 首先,创建一个递归枚举页面中控件的方法: public static IEnumerable<FrameworkElement> FindVisualChildren(FrameworkElement control) {
谷歌搜索这类东西对我来说也不太合适——我想我的术语错了,所以任何关于这方面的提示都将不胜感激 首先,创建一个递归枚举页面中控件的方法:
public static IEnumerable<FrameworkElement> FindVisualChildren(FrameworkElement control)
{
if (control == null)
{
yield break;
}
for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(control); i++)
{
var child = System.Windows.Media.VisualTreeHelper.GetChild(control, i) as FrameworkElement;
if (child != null)
{
yield return child;
foreach (var grandChild in FindVisualChildren(child))
{
yield return grandChild;
}
}
}
}
公共静态IEnumerable FindVisualChildren(FrameworkElement控件)
{
if(control==null)
{
屈服断裂;
}
对于(int i=0;i
然后调用它并仅保留所需的控件:
var buttons = FindVisualChildren(this.ContentPanel)
.OfType<Button>()
.Where(b => b.Tag is string && (string)b.Tag == "foo");
var buttons=FindVisualChildren(this.ContentPanel)
第()类
其中(b=>b.Tag是string&(string)b.Tag==“foo”);
(其中ContentPanel是页面的根元素)您可能应该遍历页面上的所有控件,检查每个控件是否都是按钮,如果是,请检查其标记属性 像这样的
foreach (UIElement ctrl in ContentPanel.Children)
{
if (ctrl.GetType() == typeof(Button))
{
Button potentialButton = ((Button)ctrl);
if (potentialButton.Tag = Tag)
return (Button)ctrl;
}
}
但是,请记住,如果页面上有嵌套控件,则需要考虑递归到包含子项的任何项中,以确保捕获所有控件