簡體   English   中英

MVVM 在兩個視圖/視圖模型之間傳遞數據

[英]MVVM Passing data between two views / view models

我有兩個頁面:

  1. 第 1 頁
  2. 第 2 頁

和兩個具有相同屬性的 ViewModel:

  1. 視圖模型1
    屬性:
    • 名字 1
    • 姓 1
  2. 視圖模型2
    屬性:
    • 名字 2
    • 姓氏2

現在我想在 ViewModel1 到 ViewModel2 之間傳遞數據(屬性),並在第 2 頁上檢索這些數據。我該如何實現?

你可以看看MVVMLight的 Messenger 。 是一個教程,可以指導您繼續前進。 基本上,這個想法是使用一個獨立於您的視圖/視圖模型的信使從/向它們發送消息。 您的視圖/視圖模型注冊並發送包含您要傳遞的屬性值的特定消息。

您可以使用兩個視圖模型都繼承自的父 ViewModel 或事件聚合器。 是一個使用 Reactive Extensions 的簡單方法。

您的頁面可以這樣構建:

public class Page2 {

  public ViewModel1 VM1;

  public Page2() {
    VM1 = new ViewModel1(new ViewModel2());
  }
}

您的ViewModel1可能看起來像這樣,具有傳遞屬性:

public class ViewModel1 : Person {

  private ViewModel2 _vm2;

  public ViewModel1(ViewModel2 vm2) {
    _vm2 = vm2;
  }

  public override string FirstName {
    get { return _vm2.FirstName; }
  }

  public override string LastName {
    get { return _vm2.LastName; }
  }
}

我們假設您的ViewModel2有一些業務邏輯或其他東西

public class ViewModel2 : Person {
  //Etc
}

兩者都繼承自同一個基類:

public abstract class Person {
  public abstract string FirstName { get; }
  public abstract string LastName { get; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM