首页 > 解决方案 > 从另一个视图模型调用函数时,RaisePropertyChanged 不更新属性

问题描述

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

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;

    }
}

标签: wpfmvvm-light

解决方案


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;
        }

推荐阅读