Как отобразить UserControl с удовлетворением всех импортов - PullRequest
2 голосов
/ 18 мая 2010

У меня проблемы с Silverlight 4 / MEF. У меня есть базовая настройка фреймворка с приложением Silverlight Navigation в центре.

Ссылка на изображение для уточнения схемы

Основное приложение (Desu) содержит несколько страниц и элементов управления, которые хорошо экспортируются и импортируются. Я динамически загружаю элементы управления из Desu.Controls (например, просмотрщик изображений, который я идентифицирую с интерфейсом IImageViewer) и некоторые страницы из Desu.Pages.

Первая проблема, с которой я столкнулся, заключалась в динамической загрузке страниц и возможности переходить на эти страницы (например, использовать пустышку http://blagh/desutestpage.aspx#/Activation при загрузке Desu.Pages из xap). Я решил это, используя собственный MetaAttribute и пользовательский загрузчик контента.

Теперь по вопросу: Я хочу загрузить ImageViewerControl из Desu.Controls в HomePage в Desu. Я не загрузил Desu.Controls в пакет, хотя. Когда я пытаюсь загрузить элемент управления, он дает мне исключение CompositionException, потому что он не может удовлетворить импорт ImageViewControl. Я попытался установить AllowRecomposition = true, но это не помогло.

Так можно ли загрузить элемент управления, не удовлетворяя всем требованиям импорта, и, если да, как это сделать?

1 Ответ

1 голос
/ 18 мая 2010

То есть вы хотите, чтобы импорт изначально не был удовлетворен, но вы хотите, чтобы он был добавлен позже?

Вы были на правильном пути с установкой AllowRecomposition = true, но вам также необходимо установить AllowDefault = true. Тогда свойство будет иметь значение null, если ImageViewerControl недоступен, и будет установлено, когда оно станет доступным.

...