Bir Windows Phone 7 uygulaması yapıyorum ve görünümümdeki ViewModel'im için bir referansa ihtiyacım var, bu yüzden olay işleyicimden bir özellik ayarlayabilirim. Tek sorun, bu referansı alamam.MVVMLight - Görünümde ViewModel'e nasıl başvuru yapılır?
Ne yaptım;
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>(); }
}
Ve bir görünüm (XAML):
DataContext="{Binding Tuner, Source={StaticResource Locator}}">
Ve bakış kod geride:
public partial class Tuner : PhoneApplicationPage
{
private readonly TunerViewModel _viewModel;
public Tuner()
{
_viewModel = DataContext as TunerViewModel;
InitializeComponent();
}
Bir ViewModelLocator (silindi alakasız bit) sahip
DataContext'in bir ViewModel'e yerleştirildiği bu bağlantıyı MVVM View reference to ViewModel buldum; çünkü iyi bir çözüm gibi görünüyor. Ancak, _viewModel alanım yayınlandıktan sonra boş. Neden bu ve bunu nasıl düzeltirim? Eğer DataContext
henüz ayarlanmamış View'in yapıcı bir bağlayıcı ifade ile XAML dan DataContext
set Çünkü Google/Stackoverflow üzerinde önceden :)
size App.xaml kaynaklarında Locator kurmak mı (alternatif veya ancak sayfası kaynakları gibi KURU değil)? Çünkü bu, XAML bağlayıcınızda görüntü modelini bulamıyor gibi görünüyor. – Robaticus