Como você acessa o MainViewModel no ViewModelLocator a partir do código atrás?
Criando um aplicativo WP7 usando o MVVM light para meus modelos de exibição. Estou usando o ViewModelLocator que é adicionado quando você adiciona a biblioteca através do NuGet. Funciona muito bem, mas agora preciso obter acesso a um ViewModel a partir do código.
No meu código, o usuário clica em um botão e preciso pesquisar no MainViewModel (que contém vários modelos de exibição) e encontrar um com base nos critérios que o usuário inseri
Normalmente, eu responderia ao evento Click do botão, mas não tenho uma variável de instância da classe ViewModelLocator para obter o MainViewModel para realizar a pesquisa. Com o modelo padrão (não MVVMLight) para Windows Phone 7, a classe App possui uma variável estática para o modelo de exibição principal, para que você possa acessá-lo a qualquer momento com App.ViewModel.
Há alguma conversa do twitter sobre o uso de comandos, o que seria bom, mas em algum momento eu tenho que executar uma pesquisa de código em vários vms para obter os resultados necessários. Provavelmente, é necessário injetar um serviço ISearchViewModel no View ou algo para fazer isso funciona
Aqui está a implementação do ViewModelLocator fornecida:
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;
}
}
}
Portanto, a partir do código por trás de outra visualização, como você obtém acesso ao Main (MainViewModel contém todas as listas de dados e possui um método de pesquisa que eu chamo)? Ou você deveria?
Só imaginando como as pessoas estão resolvendo esse tipo de problema?
Obrigado