Имеется такой код:
public static FrameworkElement GetParentOfType(FrameworkElement element)
{
if (element is T) return element;
while (true)
{
element = element.Parent as FrameworkElement;
if (element is T) break;
}
return element;
}
...
MyPanel myPanel = (MyPanel)GetParentOfType(myTextBox);
MyLabel myLabel = (MyLabel)GetParentOfType(myTextBox);
...
Но мне хотелось бы сделать что то вроде этого:
public static T GetParentOfType(FrameworkElement element)
{
if (element is T) return element as T;
while (true)
{
element = element.Parent as FrameworkElement;
if (element is T) break;
}
return element as T;
}
...
MyPanel myPanel = GetParentOfType(myTextBox);
MyLabel myLabel = GetParentOfType(myTextBox);
...
Но как хотелось бы не работает. Где об этом почитать или как быть? Сам искать пытался, но как правильно сформулировать запрос не знаю.
Ответ
Надо вот как:
public static T GetParentOfType(FrameworkElement element)
where T : FrameworkElement
{
if (element is T) return element as T;
while (element != null)
{
element = element.Parent as FrameworkElement;
if (element is T) break;
}
return element as T;
}
Комментариев нет:
Отправить комментарий