Динамически создавайте элементы и привязывайте их к списку ‹T›

У меня есть ObservableCollection<Class1>, где Class1 содержит позиции x и y как свойства. Список может быть любого размера. У меня есть ViewModel, который представляет коллекцию как свойство. На мой взгляд, я хочу создать список элементов на основе коллекции, а затем установить их позиции x и y на основе свойств объекта Class1.

Как я могу это сделать? Я знаю, что могу легко привязать элемент управления коллекцией (например, представление списка) к коллекции. Но мне нужно привязать его, и элементы используют свойство x, y, чтобы позиционировать себя на холсте. Любые идеи приветствуются.


person Aishwar    schedule 28.09.2010    source источник


Ответы (2)


Вы можете использовать Canvas в качестве ItemsPanel в ItemsControl, а затем привязать свойства Canvas.Top и Canvas.Left в ItemContainerStyle к свойствам X и 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>
person Steve Greatrex    schedule 28.09.2010
comment
+1 Это кажется очень многообещающим. К сожалению, я не могу попробовать это до сегодняшнего дня. Я попробую, а потом отправлю что-нибудь в ответ. Спасибо - person Aishwar; 28.09.2010

Возможно, вы сможете использовать представление коллекции или что-то подобное для этого.

Надеюсь, это поможет.

Спасибо, Дамиан

person Damian Schenkelman    schedule 28.09.2010