将数据从 ViewModel 发送到 ViewModel 并显示在 ViewPages 上

Send data from ViewModel to ViewModel and showing on ViewPages

我有两种 Views,Coffee 和 Doppio 咖啡(可能是任何咖啡)。 CoffeeView 是可用咖啡的列表,当点击一个 Coffee 时,它​​将打开其详细信息页面(在本例中,Doppio 已点击)。 我有两个 ViewModel,分别是 CoffeViewModel 和 CoffeeDetailsViewModel。

我可以实现这个场景,但不能对它进行 MVVMify。我知道路由。我可以在路由上传递变量,但不能在 ViewModel 之间传递。见下图。当我点击 Coffee 上的特定项目时,我希望它将其数据从 CoffeeViewModel 发送到其 CoffeeDetailsViewModel,同时打开其 DetailsViewPage 并在该页面上显示数据。

 await Navigation.PushAsync(new CoffeeDetailsPage(family));

await Shell.Current.GoToAsync($"{nameof(CoffeeDetialsPage)}?Data={Data}"); 

我已经使用了上面的路由语法,但是它可以 post 数据到 CoffeeDetails.XAML.cs 而不是它的 ViewModel,当我想发送数据到它的 ViewModel 时,它没有启动它的页。

更新

ViewModel 使用以下语法在 Xaml 中实例化。

 <ContentPage.BindingContext>
    <ViewModel:CoffeeViewModel></ViewModel:CoffeeViewModel>
  </ContentPage.BindingContext>

如果您在构造函数中分配 VM,您可以轻松地向它传递一个参数

public CoffeeDetailsPage(Family family)
{
    InitializeComponent();

    BindingContext = new CoffeeViewModel(family);
}