Estoy construyendo una aplicación para Windows Phone 7, y necesito una referencia a mi ViewModel en mi vista para poder establecer una propiedad desde mi controlador de eventos. El único problema es que no puedo obtener esa referencia.MVVMLight: cómo obtener una referencia al ViewModel en la Vista?
Lo que hice;
Tengo un ViewModelLocator (suprimido los bits irrelevantes):
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<TunerViewModel>();
}
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "This non-static member is needed for data binding purposes.")]
public TunerViewModel Tuner
{
get { return ServiceLocator.Current.GetInstance<TunerViewModel>(); }
}
y una vista (XAML):
DataContext="{Binding Tuner, Source={StaticResource Locator}}">
Y el código subyacente de la vista:
public partial class Tuner : PhoneApplicationPage
{
private readonly TunerViewModel _viewModel;
public Tuner()
{
_viewModel = DataContext as TunerViewModel;
InitializeComponent();
}
Encontré este enlace MVVM View reference to ViewModel donde el DataContext se convierte en un ViewModel, así que probé lo mismo b Porque parece una buena solución. Sin embargo, mi campo _viewModel es nulo después del lanzamiento. ¿Por qué es esto y cómo soluciono esto? No podía encontrar en Google/Stackoverflow
Gracias de antemano :)
¿Creó el Localizador de sus recursos App.xaml (o, como alternativa, pero no tan seco, en sus recursos de página)? Porque parece que no está encontrando el modelo de vista en su enlace XAML. – Robaticus