Самый простой способ - передать экземпляр модели представления вашему представлению, где это необходимо. Тем не менее, лучший способ - использовать любые шаблоны MVVM и зарегистрировать свой экземпляр с помощью контейнера.
Я использую MVVM Light, и там есть возможность использовать контейнер SimpleIo c. Просто зарегистрируйте ваши ViewModel и получите уникальные экземпляры вашей ViewModel в любом месте.
Мои ViewModels зарегистрированы в классе ViewModelLocator, как показано ниже.
public LoginViewModel LoginVM
{
get
{
if (!SimpleIoc.Default.IsRegistered<LoginViewModel>())
{
SimpleIoc.Default.Register<LoginViewModel>();
}
return SimpleIoc.Default.GetInstance<LoginViewModel>();
}
}
И у меня в App.cs есть свойство под названием Locator, как показано ниже.
public static ViewModelLocator Locator
{
get { return _locator ?? (_locator = new ViewModelLocator()); }
}
Так что теперь, где бы ни требовалось, я могу получить доступ к ViewModel, как показано ниже.
App.Locator.LoginVM.[PropertyName] = [values to assign];