ورود

View Full Version : یافتن کنترل های موجود در فرم windows در wpf



mymina
دوشنبه 06 خرداد 1392, 11:59 صبح
سلام
قبل از هر چیزی تشکر می کنم از همه دوستان که سوالات متعدد بنده جواب می دهند من تازه شروع به یاد گیری wpf کرده ام و به مشکلات زیادی بر می خورم
می خواهم تابعی بنویسم که بتواند نام تمام کنترل های از نوع combobox موجود در فرم windows را در لیستی بریزد
بتوان نام تمام کنترل ها را بستگی به نوع آنها بدست بیاورم .:لبخندساده:

mymina
دوشنبه 06 خرداد 1392, 13:06 عصر
هیچکس مارو تحویل نمیگیره یک بازدید کننده هم نداشتم که مشکلم رو حل کنه :ناراحت:
ولی عیب نداره راه حلم پیدا کردم :لبخندساده: تابع رو زیر قرار میدم برای دوستانی که شاید مشکل من رو پیدا کنند


public void searchcontrol()
{
foreach (ComboBox p in FindVisualChildren<ComboBox>(GridPeroperty) )
{

comboBox1.Items.Add(p.Name);

}
}

public IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
int depObjCount = VisualTreeHelper.GetChildrenCount(depObj);
for (int i = 0; i < depObjCount; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}

if (child is GroupBox)
{
GroupBox gb = child as GroupBox;
Object gpchild = gb.Content;
if (gpchild is T)
{
yield return (T)child;
child = gpchild as T;
}
}

foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}