Я создаю приложение для Windows Phone 7, и мне нужна ссылка на мою ViewModel в моем представлении, чтобы я мог установить свойство из моего обработчика событий. Единственная проблема в том, что я не могу получить эту ссылку.
Что я сделал;
У меня есть ViewModelLocator (удалены ненужные биты):
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>(); }
}
И представление (XAML):
DataContext="{Binding Tuner, Source={StaticResource Locator}}">
И код для представления:
public partial class Tuner : PhoneApplicationPage
{
private readonly TunerViewModel _viewModel;
public Tuner()
{
_viewModel = DataContext as TunerViewModel;
InitializeComponent();
}
Я нашел эту ссылку MVVM Просмотр ссылки на ViewModel , где DataContext преобразуется в ViewModel, поэтому я попробовал то же самое, потому что это выглядит как хорошее решение. Тем не менее, мое поле _viewModel является нулевым после приведения. Почему это и как я могу это исправить? Я не смог найти его в Google / Stackoverflow
Заранее спасибо:)