C# WPF MVVM 2 vistas de Usercontrols con el mismo contexto de datos y ViewModel.
Tengo 2 vistas de usercontrol, estas son: Bmw.xaml
y Audi.xaml
.
En ambos archivos xaml añado esto:
<usercontrol x:class="TestProject.Views.Fragments.Audi"></usercontrol><!--El código estándar generado por Visual Studio-->
xmlns:viewModels="clr-namespace:TestProject.ViewModels"
<grid>
<!--CÓDIGO XAML-->
</grid>
En ambos archivos bmw.caml.cs y audi.xaml.cs tengo esto en mi constructor:
public Audi()
{
InitializeComponent();
this.DataContext = new BrandViewModel();
}
Y
public BMW()
{
InitializeComponent();
this.DataContext = new BrandViewModel();
}
En el ViewModel están mis funciones, para simplificar cuando el ViewModel es llamado por el Audi quiero llamar a la función ActionAudi() y cuando es llamado por el BMW quiero llamar a ActionBMW().
¿Hay alguna forma de saber en la clase ViewModel a qué usercontrol (audi o bmw) pertenece? Porque dependiendo de esto se debe ejecutar una lógica diferente.
¡Gracias de antemano!
davy.ai
Una forma de lograr esto es pasar un parámetro al constructor del ViewModel que indique si pertenece al UserControl de Audi o BMW. Por ejemplo:
“` c#
public class BrandViewModel
{
private bool isAudi;
}
De esta manera, el ViewModel sabe si pertenece al UserControl de Audi o BMW y puede ejecutar la lógica correspondiente en sus métodos.