2010-09-28 6 views
1

J'ai un ObservableCollection<Class1>Class1 contient les positions x et y comme propriétés. La liste peut être de n'importe quelle taille. J'ai un ViewModel qui expose la collection en tant que propriété. À mon avis, je veux générer une liste d'éléments basés sur la collection, puis définir leurs positions x et y en fonction des propriétés de l'objet Class1.Créer dynamiquement des éléments et les lier à une liste <T>

Comment est-ce que je peux faire ceci? Je sais que je peux facilement lier un contrôle de collection (comme List View) à la collection facilement. Mais j'ai besoin de le lier et les éléments utilisent la propriété x, y pour se positionner sur la toile. Toutes les idées ont apprécié.

Répondre

1

Vous pouvez utiliser une toile comme votre ItemsPanel dans ItemsControl, et lier ensuite les propriétés Canvas.Top et Canvas.Left sur le ItemContainerStyle aux propriétés X et Y:

<ItemsControl ItemsSource="{Binding}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Canvas /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 

     <ItemsControl.ItemContainerStyle> 
      <Style> 
       <Setter Property="Canvas.Left" Value="{Binding X}" /> 
       <Setter Property="Canvas.Top" Value="{Binding Y}" /> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 
    </ItemsControl> 
+0

+1 Cela semble très prometteur. Malheureusement, je ne peux pas l'essayer plus tard aujourd'hui. Je vais essayer et poster quelque chose en retour. Merci – Aishwar

+0

Cela a fonctionné pour moi. Merci – Aishwar

0

Vous pourriez être en mesure de utilisez un Collection View ou quelque chose de similaire pour y parvenir.

J'espère que cela aide.

Merci, Damián