Шаблон управления Mvvm и Mef and Item - PullRequest
0 голосов
/ 22 сентября 2011

В моем приложении WPF есть следующий случай:

У меня есть основной пользовательский элемент управления с его MainViewModel, который связан с контрольным текстом данных.

Внутри основного элемента управления у меня есть элемент управления, источник которого привязан к списку.

элемент управления имеет пользовательский элемент управления в качестве своего шаблона, который рисует детали пользователя, каждый шаблон, как мы знаем, имеет пользователя в качестве своего Datacontext.

Мой вопрос:

Как яможно использовать основной текст данных элемента управления (MainViewModel) в пользовательском элементе управления шаблона.Я попытался использовать mef для импорта MainViewModel, но проблема в том, что он экспортирован с политикой создания "NonShared", поэтому при импорте будут добавлены новые экземпляры MainViewModel, а не одного из элемента управления Main.

Заранее спасибо ...

1 Ответ

0 голосов
/ 22 сентября 2011

Если вы пытаетесь использовать MEF, вы всегда можете составить существующее значение с уникальным именем, например:

MainViewModel vm = DataContext;
container.ComposeExportedValue("SharedViewModel", vm);

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

[Import("SharedViewModel")]
public MainViewModel ViewModel { get; set; }

Где ComposeExportedValue - метод расширения, принадлежащий типу AttributedModelServices.

...