2016-01-09 8 views
1

J'ai une application Prism WPF qui utilise des popups. La même fonctionnalité est nécessaire dans plusieurs endroits, j'ai donc mon popup référencé comme ça.WPF, C#: plusieurs déclarations de popup créant des problèmes

<i:Interaction.Triggers> 
    <interactionRequest:InteractionRequestTrigger SourceObject="{Binding CreateCatalogsRequest, Mode=OneWay}"> 
     <interactionRequest:PopupWindowAction> 
      <interactionRequest:PopupWindowAction.WindowContent> 

       <!-- Problem line below --> 
       <view:SomePopUpView /> 

      </interactionRequest:PopupWindowAction.WindowContent> 
     </interactionRequest:PopupWindowAction> 
    </interactionRequest:InteractionRequestTrigger> 
</i:Interaction.Triggers> 

Ce même extrait de code apparaît exactement dans deux contrôles pour le moment. Lorsque je commente le code, ou remplacer "SomePopupView" avec un composant standard (Combobox) mon application fonctionne. Lorsque je l'ai référencé deux fois le même composant (SomePopupView), mon application se bloque en se plaignant des régions.

Je ne veux pas avoir à réécrire ou étendre ou faire de l'architecture vaudou, mais comment puis-je obtenir la même fonctionnalité popup dans différentes parties de l'application?

Toute aide est grandement appréciée

EDIT La solution telle que fournie par des travaux AnjumSKhan. Ma solution est la suivante

App.xaml

<Application.Resources> 
    <view:SomePopupView x:Key="SomePopupView" /> 
    .... 
<Application.Resources> 

Voir avec pop-up dupliquée

<i:Interaction.Triggers> 
    <interactionRequest:InteractionRequestTrigger SourceObject="{Binding CreateRequestInteraction, Mode=OneWay}"> 
     <interactionRequest:PopupWindowAction> 
      <interactionRequest:PopupWindowAction.WindowContent> 
       <ContentControl Content="{StaticResource SomePopupView}"></ContentControl> 
      </interactionRequest:PopupWindowAction.WindowContent> 
     </interactionRequest:PopupWindowAction> 
    </interactionRequest:InteractionRequestTrigger> 
</i:Interaction.Triggers> 
+1

Déclarez votre 'Popup' comme' Resource'. – AnjumSKhan

+0

Postez votre solution en tant que réponse et acceptez-la pour que les autres puissent clairement voir que c'est une question résolue. – Bart

Répondre

0

Solution.

App.xaml

<Application.Resources> 
    <view:SomePopupView x:Key="SomePopupView" /> 
    .... 
<Application.Resources> 

Voir avec pop-up dupliquée

<i:Interaction.Triggers> 
    <interactionRequest:InteractionRequestTrigger SourceObject="{Binding CreateRequestInteraction, Mode=OneWay}"> 
     <interactionRequest:PopupWindowAction> 
      <interactionRequest:PopupWindowAction.WindowContent> 
       <ContentControl Content="{StaticResource SomePopupView}"></ContentControl> 
      </interactionRequest:PopupWindowAction.WindowContent> 
     </interactionRequest:PopupWindowAction> 
    </interactionRequest:InteractionRequestTrigger> 
</i:Interaction.Triggers>