2017-03-07 110 views
0

我在WPF應用程序中使用Prism 6。
我正在使用RegionPopupBehavior from Microsoft's StockTrader example code 但是,無論何時顯示此彈出窗口,似乎都無法將參數傳遞給視圖。 - INavigationAware.OnNavigatedTo未被調用。 - 沒有一種方法可以在沒有視圖的情況下獲取視圖的區域參數,具體知道它所在的名稱(據我所知)。將參數傳遞給Prism彈出窗口的正確方法

命令向新視圖提供參數的正確方法是什麼?

編輯: 我希望能夠從代碼中的命令顯示彈出窗口。 代碼可能沒有實際視圖類的範圍,只有它的名稱。

+0

你可以添加更多關於你想實現這個的細節嗎?您希望如何傳遞參數,使用命令,爲什麼您認爲區域彈出行爲會爲您工作,所有這一切。 –

回答

2

如果你想使用棱鏡6,你真的需要參考不是4歲的例子,並且可能不適合最新的比特。

你可以找到更近的例子here

具體來說,您需要查看交互性示例,朝向頁面底部。這是您現在用來管理彈出窗口以進行確認,通知和其他交互(從最終用戶獲得輸入)的內容。 Interactivity - Custom Request示例可能正是您所需要的。你可以用它來傳遞信息,並從交互中獲取信息。

我有時使用這些來顯示最終用戶的小編輯交互。我傳遞了我希望它們編輯的對象,並在單擊「確定」時獲取更改的對象,然後執行操作(更新/保存)。

我希望這可以幫助你。

+0

感謝這些鏈接,他們看起來很有用。雖然我沒有看到它如何解決我的使用案例,但我會更充分地填寫我的問題。實質上,彈出窗口應該能夠以代碼顯示,並通過它的名稱顯示視圖,而不是xaml。 – Landerah

0

類別通知具有屬性內容,對象類型。因此,您可以將任何類型參數傳遞給彈出窗口。例如,在MainViewModel:

using Prism.Interactivity.InteractionRequest; 
using Prism.Commands; 
public InteractionRequest<IConfirmation> ConfirmInPopup { get; private set; } 
//code 
ConfirmInPopup.Raise(new Confirmation() { 
         Title = "Confirm", 
         Content = new MedInModel 
         { 
          MedOnlyCode = med.MedOnlyCode, 
          MedName = med.MedName, 
          MedNowAmt=10, 
          BoxId=med.BoxId 
         } 
        },t => 
          if (t.Confirmed) 
          { 

          } 
         ); 

在彈出的窗口中,可以從通知得到這個,

using Prism.Interactivity.InteractionRequest; 
public class ConfirmMedInViewModel : IInteractionRequestAware 
{ 
     public INotification Notification 
     { 
      get 
      { 
       return _confirmation; 
      } 
      set 
      { 
       SetProperty(ref _confirmation, (IConfirmation)value); 
      } 
     } 
     public Action FinishInteraction { get; set; 
} 

現在得到通知屬性參數。

相關問題