2011-10-12 3 views
1

J'ai besoin d'éclaircissements sur l'utilisation de Pop-up, InteractionRequest. Voici mon scénario.Portée de Popup et InteractionRequest dans Prism

J'ai une vue de navigation latérale gauche qui affiche le dossier en arborescence (comme le répertoire Windows). Je devrais permettre à l'utilisateur d'ajouter, renommer et supprimer le répertoire en utilisant le menu contextuel. Pour les opérations d'ajout et de changement de nom, il faut faire apparaître une fenêtre avec "TextBox" pour la saisie par l'utilisateur et avoir le bouton "Enregistrer" et "Annuler". Pour l'option Supprimer, si vous devez demander une confirmation.

Que faire pour l'opération Ajouter/Renommer?

  1. Créer une fenêtre simple (avec la touche TextBox d'entrée utilisateur, le bouton Enregistrer et Annuler) sans ViewModel. Enregistrer et Annuler Le bouton permet de définir l'indicateur DialogResult et de fermer la fenêtre.

  2. Créer une fenêtre simple (avec TextBox d'entrée utilisateur, bouton Enregistrer et Annuler) avec ViewModel. Le clic sur le bouton Enregistrer et Annuler sera traité dans ViewModel (Ce bit est fastidieux car le code est très limité).

  3. Existe-t-il une autre façon de gérer cela?

Que dois-je faire pour supprimer l'opération?

  1. Je vais pour InteractionRequest

  2. Je vais aller pour la fenêtre personnalisée (dialogue) qui sera appelé comme MessageBox, sans pop-up ou InteractionRequest (c.-à-vue de modèle => MyMessageBox.Show (. ....) == Dialog.Ok ..

s'il vous plaît me donner la bonne solution.

+0

Je veux que cette question d'avoir toutes les informations sur demande d'interaction et Pop-up.I passé beaucoup de temps sur l'endroit où l'utilisation de demande d'interaction et pop-up et où ne doit pas. – Mohanavel

+0

Eh bien, je vais faire une petite étude et mettre à jour ma réponse sous peu. – Mohanavel

Répondre

2

Depuis votre Popup est si petit, je serais vraiment créer un DataTemplate dans côté de votre View actuel et liez simplement les commandes Add/Rename/Remove au même ViewModel. J'aime utiliser my own custom Popup, parce que j'ai eu de nombreux problèmes avec les popups de WPF dans le passé. Il est généralement utilisé comme ceci:

<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. Cela fonctionnera-t-il pour l'entrée de l'utilisateur TextBox? 2. Pourquoi ne pas personnaliser MessageBox comme MyMessageBox.Show (..) ou IMessageBox.Show (..) afin qu'il me permette de changer le style de boîte de message sur fly. – Mohanavel

+0

@Mohanavel 1. Oui. 2. Bien sûr, vous pouvez créer votre propre 'MessageBox' personnalisé avec une méthode' .Show() ', mais si vous voulez modifier le contenu de la boîte de dialogue, alors je trouve plus facile d'utiliser simplement un Popup – Rachel

+0

Pouvez-vous me donner le site URL/Sample qui contient la requête POP-UP ou Interaction avec l'entrée utilisateur TextBox? et je veux que cette question ait toutes les informations sur Interaction Request et Pop-Up. J'ai passé beaucoup de temps sur où utiliser Interaction Request et Pop-Up et où ne devrait pas. – Mohanavel