Caliburn.Micro: программно создавать и привязывать вид - PullRequest
6 голосов
/ 13 июня 2011

В настоящее время я экспериментирую с композицией вида в Caliburn.Micro. У меня есть рабочий пример, где у меня есть несколько представлений, основанных на элементах управления пользователя, внедренных в мою основную оболочку через маршрут присоединенного свойства View.Model. Пока все хорошо.

В собственном приложении я работаю со смешанной средой, в основном WinForms, с некоторыми WPF, поэтому для Caliburn не существует WPF-оболочки. Я хотел бы иметь возможность создавать свои представления по требованию и добавлять их в заполнители в моем приложении WinForms.

Я хотел бы знать, как я могу создать представление (которое будет являться пользовательским элементом управления, содержащим подпользовательские элементы управления) программно с использованием Caliburn, чтобы выполнялись все условные обозначения, привязки модели и внедрение подвид.

Ответы [ 2 ]

14 голосов
/ 13 июня 2011

Caliburn ViewModelBinder можно использовать для поворота ручки, когда у вас есть экземпляр вида и соответствующая модель вида. Вызов Bind разрешает внедренные представления и применяет связывание, основанное на соглашениях, и т.д .:

    SomeCompositionView view = new SomeCompositionView();

    ISomeCompositionViewModel viewModel = IoC.Get<ISomeCompositionViewModel>();

    ViewModelBinder.Bind(viewModel, view, null);

    ElementHost.Child = view;  
10 голосов
/ 19 июня 2015

Фрагмент кода от BootstrapperBase.DisplayRootViewFor:

var viewModel = IoC.GetInstance(viewModelType, null);
var view = ViewLocator.LocateForModel(viewModel, null, null);

ViewModelBinder.Bind(viewModel, view, null);

var activator = viewModel as IActivate;
if(activator != null)
    activator.Activate();
...