Создание приложения WP7 с использованием MVVM light для моделей моего вида.Я использую ViewModelLocator, который добавляется при добавлении библиотеки через NuGet.Работает отлично, но теперь мне нужно получить доступ к ViewModel из кода.
В моем коде пользователь нажимает кнопку, и мне нужно найти MainViewModel (которая содержит несколько моделей представления) и найти одну на основе критериевпользователь ввел.
Обычно я просто отвечал бы на событие Click кнопки, но у меня нет переменной экземпляра класса ViewModelLocator, чтобы получить MainViewModel для выполнения поиска.С шаблоном по умолчанию (не MVVMLight) для Windows Phone 7 класс App имеет статическую переменную для модели основного вида, поэтому вы можете получить к ней доступ в любое время с помощью App.ViewModel.
В Twitter есть разговоры об использованииКоманды, которые были бы хорошими, но в какой-то момент я должен выполнить поиск кода по нескольким vms, чтобы получить нужные мне результаты.Вероятно, нужно внедрить службу ISearchViewModel в View или что-то для этой работы.
Ниже приведена реализация ViewModelLocator:
public class ViewModelLocator
{
private static MainViewModel _main;
public ViewModelLocator()
{
_main = new MainViewModel();
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main
{
get
{
return _main;
}
}
}
Итак, из кода позади другого представления,как вы получаете доступ к Main (MainViewModel содержит все списки данных и имеет метод поиска, который я вызываю)?Или вам стоит?
Просто интересно, как люди решают этот тип проблемы?
Спасибо.