从另一个视图模型调用函数时,RaisePropertyChanged不更新属性

时间:2018-12-07 16:59:00

标签: wpf mvvm-light

该类用于将搜索结果绑定到列表框和选定列表中,它将在概览面板中显示结果,两者都是两种不同的视图模型。

public class SearchClients : 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 :(得分:0)

在标签导航中为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;
        }