2011-09-07 2 views
0

Je construis une application composite qui, entre autres, offre une région pour les plugins (basée sur l'unité) pour enregistrer des vues.Différents contrôles basés sur les vues enregistrées pour cette région

Le problème est que je veux avoir une mise en page différente pour cette région, en fonction du nombre de vues enregistrées. En particulier, je veux avoir une grande surface unique (étirée dans toutes les directions) pour le cas 'one view registered' et une grille à deux colonnes (uniforme) pour le cas '> 1 view registered'.

donc - pour l'instant je vais avoir (simplifié) quelque chose comme ceci:

<ItemsControl 
     rgn:RegionManager.RegionName="{x:Static Member=i:RegionNames.MainContentRegion}" 
     HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" 
     VerticalAlignment="Stretch" VerticalContentAlignment="Stretch"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <UniformGrid Columns="2" 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Stretch" /> 
      </ItemsPanelTemplate>     
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <ContentPresenter 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

Comment puis-je couvrir le cas exceptionnel « un seul élément », si les vues sont ~ ~ dynamique et enregistré ailleurs?

Répondre

0

Vous pourriez être en mesure d'utiliser un déclencheur pour modifier le ItemsPanelTemplate à un autre panneau lorsque Items.Count == 1.

Questions connexes