2010-11-15 20 views
1

Je suis en train de définir dynamiquement la vue pour mon ListView: Mais j'obtiens une exception 'La vue ne peut pas être partagée par plus d'un ListView' bien que je ne l'utilise qu'une seule fois. De toute façon, si je crée déjà une instance, puis les déclencheurs DataTrigger, l'exception se produit également.'La vue ne peut pas être partagée par plus d'un système ListView' Windows.ListView

Ceci est mon code WPF:

<ListView ItemsSource="{Binding Collection}" SelectionMode="Extended" AlternationCount="2" > 
    <ListView.Style> 
     <Style> 
      <Setter Property="ListView.View" Value="{StaticResource MyView1}" /> 
      <Style.Triggers>     
       <DataTrigger Binding="{Binding Path=MyPath1}" Value="True"> 
        <Setter Property="ListView.View" Value="{StaticResource MyView2}" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=MyPath2}" Value="True"> 
        <Setter Property="ListView.View" Value="{StaticResource MyView3}" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.Style> 
</ListView> 

et c'est de Ressources:

<GridView x:Key="MyView1"> 
    <GridViewColumn DisplayMemberBinding="{Binding Path=MyProperty}" > 
     <GridViewColumnHeader Content="Text" /> 
    </GridViewColumn> 
</GridView> 
.. 

Répondre

6

Utilisez DynamicResource plutôt que StaticResource.

Voir this question pour le code complet.

+0

+1 Cela corrige à –

+0

Cela fonctionne pour moi aussi .. 2 conditions: DynamicResource + initial Voir la définition - déclencher tous les modèles avec DataTrigger –

7

Vous pouvez ajouter le x: Shared = attribut "False" à vos ressources GridView comme celui-ci

<GridView x:Key="MyView1" x:Shared="False"> 
    <GridViewColumn DisplayMemberBinding="{Binding Path=MyProperty}" > 
     <GridViewColumnHeader Content="Text" /> 
    </GridViewColumn> 
</GridView> 
.. 

Mise à jour

exemple de projet Téléchargé here

+0

Je l'ai essayé ... mais ça ne marche pas. La même erreur se produit .. –

+0

Hmm, ça marche bien pour moi quand je l'ajoute. Téléchargé un exemple de projet –