2010-02-26 4 views
1

Est-il possible que les contrôles d'un canevas soient liés à une liste d'objets? Je pense quelque chose comme ceci:Contrôle du canevas de databound dans Silverlight

<UserControl.Resources> 
    <DataTemplate x:Key="MyItemTemplate"> 
     <ContentControl Content="{Binding Converter={StaticResource MyControlConverter}}"></ContentControl> 
    </DataTemplate> 
</UserControl.Resources> 
<Canvas ItemsSource="{Binding MyItems}" ItemTemplate="{StaticResource MyItemTemplate}"> 
</Canvas> 

Où MyItems est ceci:

public List<Tuple<ControlType, Point>> MyItems; 

En fait, il y aurait un convertisseur qui convertit chaque objet Tuple à un contrôle au coordonnées du point donné sur la toile. Je sais qu'il n'existe pas de propriété "ItemsSource" ou "ItemsTemplate" sur le contrôle Canvas, mais est-ce possible d'une autre manière?

Répondre

4

Vous ajoutez une zone de liste et définissez ses élémentspanel comme toile.

<ListBox ItemsSource="{Binding MyItems}" ItemTemplate="{StaticResource MyItemTemplate}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
     <Canvas/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 
Questions connexes