RaisePropertyChanged не обновляет свойства при вызове функции из другой модели представления - PullRequest
0 голосов
/ 07 декабря 2018

Этот класс используется для привязки результатов поиска в списке и в выбранном списке, он будет отображать результат на панели обзора, оба представляют собой две разные модели представления.

public class SearchClients : Client

{public Client Client;

private void SelectedClient(int PartyId)
{
    List<Client> c = this.fileService.FindClients(PartyId, "", "").ToList();
    if (c.Count > 0)
    {
        Client = c[0];
    }
    OverviewPageViewModel viewModel = this.injector.Resolve<OverviewPageViewModel>("OverviewPage");
    viewModel.SelectedClient(Client);
}

}

Модель просмотра панели поиска

 public class SearchBar : BaseContentViewModel
{ 
       private void FindClients()
    {
        List<Client> C = fileService.FindClients(0, SrchFirstName, SrchLastName).ToList();

}

    public ICommand FindClient
    {
        get
        {
            return new RelayCommand(FindClients);
        }
    }
}

Модель просмотра панели результатов

   public class OverviewPageViewModel: BaseContentViewModel  
{
    public void SelectedClient(Client Client)
    { 
        Title = Client.TitleID; 
        FirstName = Client.FirstName;
        LastName = Client.LastName;

    }
}

1 Ответ

0 голосов
/ 07 декабря 2018

ViewModel был назначен базовый класс IContentViewModel во вкладке навигации, он должен быть инициирован с OverviewPageViewModel, который имеет все свойства.Решено !!

Неправильно:

IContentViewModel viewModel = injector.Resolve<IContentViewModel>(TabPage);

Правильно:

IContentViewModel viewModel = injector.Resolve<IContentViewModel>(TabPage);
        if (TabPage == "OverviewPage")
        {
            injector.Resolve<ViewModels.Windows.MainWindowViewModel>().CurrentPageViewModel = injector.Resolve<OverviewPageViewModel>(TabPage);
        }
        else
        {
            //viewModel.ClearData();
            injector.Resolve<ViewModels.Windows.MainWindowViewModel>().CurrentPageViewModel = viewModel;
        }
...