2012-05-29 4 views
2

Я пишу приложение C#/WPF. У меня будет контейнер списка в моем окне, полный пользовательских элементов управления, которые пользователь может выбрать. Я бы хотел, чтобы у меня была папка, в которой я размещал свои пользовательские элементы управления. Мое основное приложение будет смотреть на это местоположение папки при запуске для всех пользовательских элементов управления, а затем добавлять их в контейнер списка. Это позволит мне создавать новые пользовательские элементы управления и отбрасывать их в том месте, которое приложение знает для поиска. У кого-нибудь есть руководство/руководство по наилучшему способу справиться с этим?C# UserControl - добавление их во время выполнения

Я предполагаю, что моя папка будет что-то вроде: UserControls/ UserControls/controlOne UserControls/controlTwo usercontorls/newControl

и т.д ...

Спасибо за любую помощь

+0

'есть папка, в которую я помещаю свои пользовательские элементы управления.': Вы имеете в виду сборки, содержащие пользовательские элементы управления? или необработанные файлы xaml? –

+0

jberger: Я действительно не знаю, не пробовал это раньше, и я еще не знаю, что мне понадобится и как это будет работать. –

ответ

1

Используйте XamlReader для загрузки фрагментов разметки Xaml во время выполнения.

Вот пример:

void AddDynamicContent(string path, Panel panelToAddContent) 
{ 

    DirectoryInfo di = new DirectoryInfo(path); 
    if (di.Exists) 
    { 
    FileInfo[] fileInfos = di.GetFiles("*.xaml"); 
    foreach (FileInfo fi in fileInfos) 
    { 

     XmlReader xmlReader = XmlReader.Create(fi.FullName); 
     FrameworkElement dynamicContent = (FrameworkElement)XamlReader.Load(xmlReader); 
     panelToAddContent.Children.Add(dynamicContent); 
    } 
    } 
} 

... 

AddDynamicContent(@"c:\temp\controls", myStackPanel); 

Обязательно опустить декларацию класса часть в определениях разметки (х: Class = «») в противном случае you'l получить исключение. И обратите внимание, что CodeBehind не выполняется, он просто создает простой UIElement.

Смежные вопросы