2011-10-12 18 views
1

我需要澄清何時使用Pop-up,InteractionRequest。這是我的場景。Prism中Popup和InteractionRequest的作用域

我有左側導航視圖,它顯示文件夾的樹形格式(與Windows目錄相同)。我應該允許用戶使用上下文菜單添加,重命名和刪除目錄。對於添加和重命名操作,它應該彈出一個帶有「文本框」的窗口供用戶輸入,並且應該具有「保存」和「取消」按鈕。對於刪除選項,如果應該要求確認。

我應該怎麼做添加/重命名操作?

  1. 創建簡單的窗口(用戶輸入文本框,保存和取消按鈕)沒有ViewModel。保存並取消按鈕點擊將設置DialogResult標誌並關閉窗口。

  2. 用ViewModel創建簡單的窗口(用戶輸入文本框,保存並取消按鈕)。 保存並取消按鈕點擊將在ViewModel中處理(這看起來有點乏味,因爲代碼非常有限)。

  3. 有沒有其他方法可以解決這個問題?

我應該怎麼做刪除操作?

  1. 我會去InteractionRequest

  2. 我會去定製窗口(對話框),其將被稱爲像的MessageBox,而不彈出或InteractionRequest(即,從視圖模型=> MyMessageBox.Show(。 ....)== Dialog.Ok ..

請給我正確的解決方案。

+0

我想這個問題有所有關於互動要求和波普Up.I信息花了很多時間在哪裏使用互動要求和彈出並在不應該。 – Mohanavel

+0

那麼,我會盡快做些小小的研究並更新我的答案。 – Mohanavel

回答

2

由於您的彈出這麼小,我真的創造一個DataTemplate在你當前的視圖旁邊,只需將Add/Rename/Remove命令綁定到同一個ViewModel。

我喜歡使用my own custom Popup,因爲我在過去有很多WPF的彈出窗口。它通常用於這樣的:

<Grid Name="RootPanel"> 

    <DockPanel> 
     <TreeView DockPanel.Dock="Right" /> 
     // <!-- Other Window Content --> 
    </DockPanel> 

    <local:PopupPanel 
     local:PopupPanel.PopupParent="{Binding ElementName=RootPanel}" 
     local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}" 

     local:PopupPanel.BackgroundOpacity=".5" 
     local:PopupPanel.PopupEnterKeyCommand="{Binding SaveCommand}" 
     local:PopupPanel.PopupEscapeKeyCommand="{Binding CancelCommand}"> 

     // Put whatever you want for Popup Content here 

     // Usually I have a property in my ViewModel for PopupContent, and 
     // will put a ContentControl here that uses a different ContentTemplate 
     // based on what type of object is in PopupContent 
    </local:PopupPanel> 

</Grid> 
+0

1.它可以用於TextBox用戶輸入嗎? 2.爲什麼不像MyMessageBox.Show(..)或IMessageBox.Show(..)那樣自定義MessageBox,以便它允許我即時更改消息框樣式。 – Mohanavel

+0

@Mohanavel 1.是的。 2.當然你可以用'.Show()'方法創建你自己定製的'MessageBox',但是如果你想修改對話框的內容,那麼我發現使用Popup更容易 – Rachel

+0

你可以給我使用用戶輸入TextBox保存POP-UP或Interaction請求的URL/Sample站點?我希望這個問題能夠獲得關於交互請求和彈出窗口的所有信息。我花了很多時間在使用交互請求和彈出窗口的位置以及哪裏不應該。 – Mohanavel