2013-04-17 3 views
1

У меня есть главное окно в сочетании с моделью view.This основное окно использует usercontrol, который также имеет свою собственную модель.Привязка свойства viewmodel к чужому

То, что я хотел бы получить, - установить привязку в xaml главного окна между одним из своих собственных свойств viewmodel и одним из пользовательских свойств пользовательской модели usercontrol.

Как бы это сделать?

+2

Вам следует избегать подключения 2 VM. Представления должны быть как можно более отключены в MVVM. Если вы можете получить доступ к дочерней виртуальной машине в родительской виртуальной машине, сохраните свойства в синхронизации через родительскую виртуальную машину или используйте что-то вроде Messenger из света MVVM для связи между 2 независимыми виртуальными машинами – Viv

ответ

1

Не могли бы вы использовать ViewModels в качестве проекций модели?

То есть, у вас есть класс, который содержит состояние (или действия), которое обе виртуальные машины должны выставлять, и иметь ссылку на виртуальные машины в этом классе?

Если по какой-то причине вы имеете Соображения пары к чему-то за пределы их собственной DataContext я верю, что можно идти только до визуального дерева с помощью RelativeSource FindAncestor в связывании. Я не думаю, что вы можете пройти вниз (например, Window -> Control).

0

Если вы действительно хотите Bind их вместе вы могли бы сделать свойство вашей ViewModel в Dependency Properties и ваши ViewModel вытекают из DependencyObject - тогда вы могли бы сделать ..

var binding = new Binding("Something"); 
binding.Source = myViewModel1; 
binding.Mode = BindingMode.TwoWay; 
BindingOperations.SetBinding(viewModel2,ViewModelType.SomethingProperty,binding); 

Если это хорошее дизайн с вашими видами моделей происходит из DependencyObject - это еще один вопрос ..

Вы также можете попробовать глядя на this library, что позволяет связываться с POCO и обратно.

+2

Это очень плохая идея по нескольким причинам, обсуждаемым здесь [здесь] (http://kentb.blogspot.com.ar/2009/03/view-models-pocos-versus.html) –

+1

@HighCore - это была статья, которую я пытался найти при публикации, я читал это сам при попытке чтобы принять это решение, хорошо найти –

+0

@HighCore, эта ссылка, похоже, мертва. –

0

В итоге я не использовал модельное представление для своего пользовательского контроля, а не как аккуратное, но, по крайней мере, оно работает и менее сложный datacontext. Спасибо всем.

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