2011-03-10 4 views
5

Tengo un requisito para integrar un control WPF en una aplicación existente de Windows Forms. La forma más simple y fácil de hacerlo sería crear un control ElementHost y establecer su propiedad Child en mi vista WPF. Esto funciona bien, la vista se muestra.Cómo uso MVVM desde Windows Forms para mostrar un control WPF

Sin embargo, interactuar con la vista es un poco engorroso y requiere modificar los campos y las cosas en el código de las visualizaciones. Lo que sería mejor es si pudiera crear una instancia del modelo de vista de la vista subyacente e interactuar con él en el modo MVVM, haciendo que la vista se muestre y actualice cada vez que cambie las propiedades de su modelo de vista.

¿Alguien sabe una manera de hacer esto?

Respuesta

4

No puede hacer eso con el diseñador, pero cuando agrega el elemento secundario de ElementHost en el código, puede crear y asignar directamente ViewModel. A medida que confirma los cambios en este ViewModel, se reflejan directamente en la Vista de WPF.

MyView view = new MyView(); 
MyViewModel model = new MyViewModel(); 
view.DataContext = model; 
ElementHost.Child = view; 


model.SomeBoundProperty = somethingElse; 
//Magic update of the WPF view 
+0

Gracias. esto funciona bien He hecho otra pregunta sobre cómo hacer que los estilos funcionen [aquí] (http://stackoverflow.com/questions/5259376/getting-generic-xaml-working-from-wpf-control-embedded-in-winforms) – cjroebuck

-4

La esencia de MVVM es vinculante. Como no tiene eso en Windows Forms, me temo que no puede usar MVVM allí.

+0

Por supuesto, puede beneficiarse de la unión de MVVM. Cualquier cambio que cometas en ViewModel (también desde la aplicación WinForm) se refleja directamente en la Vista. Y como entendí, eso es lo que se necesita en este caso. – fixagon

+0

Lo está utilizando dentro de los formularios de Windows. Como mencionó, tiene que cambiar manualmente las propiedades, ya que no tiene enlace allí. – Aliostad

+0

No me importa ser votado negativamente pero decir algo que le ahorrará tiempo y esfuerzo a alguien. – Aliostad

Cuestiones relacionadas