#c# #wpf
#c# #wpf
Вопрос:
Что я хочу сделать, так это создать список всех элементов управления WPF, которые поставляются с .NET 4. В идеале, этот список должен был бы представлять собой набор строковых объектов, таких как «Button», «ListBox» и т.д.
Буду признателен за любую помощь!
Крис
Ответ №1:
Это приведет к извлечению всех подклассов FrameworkElement
в PresentationFramework
сборке
var query =
from type in typeof(FrameworkElement).Assembly.GetTypes()
where type.IsSubclassOf(typeof(FrameworkElement))
select type.Name;
List<string> controls = query.ToList();
Примечание: в WPF нет очень четкого определения того, что такое «элемент управления» … есть Control
класс, но не все элементы пользовательского интерфейса наследуются от него. Большинство «элементов управления» наследуются (прямо или косвенно) от FrameworkElement
.
Комментарии:
1. Я думаю, вы имели в виду
GetTypes
, неGetType
.
Ответ №2:
Если вам действительно нужны все из них, вы можете выполнить поиск по соответствующим сборкам с помощью отражения и найти любые конкретные классы, которые наследуются от базового класса control.
Ответ №3:
var names = typeof(FrameworkElement)
.Assembly
.GetExportedTypes()
.Where(x => x.IsSubclassOf(typeof(FrameworkElement)))
.Select(x => x.Name);