Мое первое предложение - показать ваш метод композиции и несколько примеров кода.В противном случае я бы исключил все нагрузки, кроме одной UserControl
.Начните оттуда.Убедитесь, что вы:
[Export(typeof(IUserControl))]
public class myUserControl : UserControl, IUserControl
{
...
/*
* control to be exported:
* note: you can forego IUserControl and just use UserControl
* but make sure you do so throughout the import and
* export attributes.
*/
...
}
... а затем в приложении Host :
[ImportMany(typeof(IUserControl))]
IEnumerable<IUserControl> UserControls {get;}
Я использую здесь IEnumerable в качестве примера, потому что выожидая загрузки нескольких пользовательских элементов управления.Я предполагаю, что вы будете загружать элементы управления для отображения сразу.В противном случае, если вы не хотите их всех сразу, а вместо этого по требованию , я бы все равно перечислил так:
[ImportMany(typeof(IUserControl))]
IEnumerable<Lazy<IUserControl>> UserControls {get;}
Таким образом, вы можете выполнить итерацию, проверить UserControls[index].Value
для нуля.
Без дополнительной информации, это действительно лучшее, что я могу сделать для вас.