簡體   English   中英

如何使用帶有MVVM和WPF的WF4將ViewModel傳遞給CodeActivity

[英]How to pass ViewModel to CodeActivity using WF4 with MVVM and WPF

我正在嘗試將當前的WPF / MVVM應用程序集成到Workflow Foundation 4.0。

目前,我的ViewModel方法之一是調用我的示例CodeActivity向其發送一些參數。

在CodeActivity execute方法的內部,我需要從調用ViewModel的方法中調用某些方法。 我想知道什么是最好的方法。 到目前為止,我已經確定了三種可能的方法:

  1. 將我的ViewModel實例作為輸入參數發送到我的CodeActivity
  2. 通過我的CodeActivity中的構造方法(如public MyCodeActivity(ViewModel vm))發送ViewModel實例
  3. 將我的CodeActivity包裝在WorkflowApplication中,並使用SynchronizationContext將ViewModel實例作為擴展發送

到目前為止,我已經測試了選項2和3,它們顯然工作良好。

避免出現線程同步問題或其他問題的最佳方法是什么?

提前致謝,

編輯:僅提及一種可能的情況:如果用戶從視圖中的給定下拉列表中選擇值“ X”,則需要將對象childA和childB添加到由通過ViewModel中的公共屬性公開的ParentObject所包含的ObservableCollection中。 創建子對象並將其添加到父對象的邏輯在我的ViewModel中。 但是我希望工作流包含業務規則本身。

為什么您的CodeActivity需要了解有關特定視圖模型的任何信息? 我會尋找另一種解決方案,以使您的活動盡可能保持獨立性。 我可以想到兩個選擇:

  1. 使用抽象類或接口,以便您的活動不會綁定到單個視圖模型,即InArgument<IViewModel>
  2. 使用事件聚合模式(如果可能的話,如果是WF4,還不太確定嗎?)來促進通信,即為活動提供其工作所需的條件,並讓您的視圖模型偵聽事件以從活動中接收更新

在不了解您的應用程序細節的情況下,我不知道哪個選項最有效(或根本不起作用),但是我會避免在給定的視圖模型和給定的CodeActivity之間建立直接連接。

暫無
暫無

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

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