C# 从不同的viewmodel调用一个viewmodel中的方法

C# 从不同的viewmodel调用一个viewmodel中的方法,c#,windows-phone-8.1,mvvm-light,C#,Windows Phone 8.1,Mvvm Light,我正在Windows Phone 8.1应用程序上使用MVVMLight进行开发。我们有一个按名字或姓氏对用户列表进行排序的设置。更改此设置(由绑定到SettingsViewModel中的属性的ListPicker执行)后,我想调用其他视图模型(OtherViewModel)中的方法来重新排序OtherViewModel对应视图中的用户列表。settingsStore用于在用户手机上存储排序设置 我不希望通过var vm=new ViewModel()创建视图模型依赖项,因为这两个视图模型之间没

我正在Windows Phone 8.1应用程序上使用MVVMLight进行开发。我们有一个按名字或姓氏对用户列表进行排序的设置。更改此设置(由绑定到SettingsViewModel中的属性的ListPicker执行)后,我想调用其他视图模型(OtherViewModel)中的方法来重新排序OtherViewModel对应视图中的用户列表。settingsStore用于在用户手机上存储排序设置

我不希望通过
var vm=new ViewModel()
创建视图模型依赖项,因为这两个视图模型之间没有父/子关系。我被告知委托人是一个不错的选择,但我不太熟悉如何使用委托人实现解决方案

任何帮助都将不胜感激

设置视图

<toolkit:ListPicker x:Name="ContactsSortParametersListPicker"
                    ItemsSource="{Binding ContactsSortParameters, Mode=OneTime}" 
                    SelectedItem="{Binding ContactsSortParametersSelected, Mode=TwoWay}"
                    SelectionChanged="ContactsSortParametersListPicker_SelectionChanged"/>
设置视图模型

public IEnumerable<SortOptions> ContactsSortParameters
{
    get { return (IEnumerable<SortOptions>)Enum.GetValues(typeof(SortOptions)); }
}

private SortOptions _sortContactsParameterSelected;
public SortOptions ContactsSortParametersSelected
{
    get { return _sortContactsParameterSelected; }
    set
    {
        SetProperty(ref _sortContactsParameterSelected, value);
        _settingsStore.ContactsSortParameter = _sortContactsParameterSelected;
    }
}

如果您使用MVVM Light,我假设您的App.xaml资源中有ViewModelLocator实例,定义如下

<vm:ViewModelLocator xmlns:vm="clr-namespace:WPApp.ViewModel" x:Key="Locator" />

这正是我希望成为MVVM新手的原因。谢谢你的帮助!
public async Task LoadDirectory()
{ 
    ...relevant logic here...
}
<vm:ViewModelLocator xmlns:vm="clr-namespace:WPApp.ViewModel" x:Key="Locator" />
private async void ContactsSortParametersListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  await ((ViewModelLocator)App.Current.Resources["Locator"]).OtherViewModel.LoadDirectory();
}