2011-06-02 1 views
1

J'utilise une zone de liste avec un ensemble ItemsPanelTemplate sur un canevas. C'est ainsi que je peux positionner des Polygones sur la toile et les avoir toujours sélectionnables. Le problème que ai est la zone de sélection ne sont pas en forme de la même taille que le polygone (il est une forme rectangulaire qui couvre l'étendue du polygone)Silverlight - Comment faire pour que la zone de sélection Listbox ait la même forme que l'élément de zone de liste?

<ListBox Name="LayoutList" ItemsSource="{Binding LayoutItems}" ItemContainerStyle="{StaticResource LayoutItemStyle}"> 
<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <Canvas x:Name="LayoutCanvas" Background="Beige"> 
     </Canvas> 
    </ItemsPanelTemplate> 
</ListBox.ItemsPanel> 
<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Polygon Points="{Binding Points}" Stroke="{Binding Stroke}" StrokeThickness="1"/> 
    </DataTemplate> 
</ListBox.ItemTemplate> 
</ListBox> 

Répondre

2

La région de sélection est déterminée par le conteneur de produit; Je ne suis pas certain, mais vous pourriez être en mesure de faire ce que vous voulez en modifiant le ListBox.ItemContainerStyle (au lieu de ou en plus de DataTemplate). Quelque chose comme ceci:

<ListBox> 

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Polygon Points="{Binding Points}" Stroke="{Binding Stroke}" StrokeThickness="1"/> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ListBox.ItemContainerStyle> 

</ListBox> 
+0

Merci pour la suggestion. J'ai essayé ceci mais les régions de sélection sont toujours rectangulaires. Je continue à expérimenter. :-( – DouglasWoods

Questions connexes