Pregunta

Tengo una vista principal que define una vista secundaria en Xaml. La vista secundaria tiene una DependencyProperty que está vinculada al ViewModel de la vista primaria. Sin embargo, ese valor también es necesario para ViewModel de la vista secundaria.

<custom:Parent>
  <custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>

ChildId se implementa como una propiedad de dependencia del control ChildView . Si el ChildViewModel necesita ParentFooId , ¿cuál es la forma adecuada de MVVM de obtenerlo?

No quiero convertir DataContext de ChildView en un ChildViewModel y establecer el valor en un OnChildIdChanged manejador del ChildView . Eso no me parece muy MVVM.

La otra alternativa en la que pensé era crear un nuevo ChildViewModel con el valor y establecerlo como DataContext en el evento OnParentFooIdChanged ( en el ParentViewModel ); pero eso tampoco parece del todo correcto, ya que se supone que los ViewModels son ajenos a la vista (y, por lo tanto, no saben nada acerca de las DataContext s).

Parece que me falta algo obvio ...

¿Fue útil?

Solución

Si entiendo la pregunta correctamente, solo necesita crear el modelo de vista secundaria dentro del modelo de vista primaria, pasando y manteniendo una referencia al modelo de vista primaria. De esa manera, puede hacer referencia a cualquier propiedad del modelo de vista principal desde el modelo de vista secundaria y vincularla en la vista secundaria.

Otros consejos

Si simplemente intenta pasar datos de una propiedad de dependencia a su modelo de vista, usaría el evento PropertyChangedCallback. Agregue un controlador que envíe los datos modificados a su Modelo de vista. Sin embargo, puedo estar malinterpretando tu intención.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top