Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: AishwarОтветов: 2

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

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

mvvmdynamicdata-bindingwpf

Ответы

Ответ 1 · рейтинг 1 · Steve Greatrex

Вы можете использовать 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>

Ответ 2 · Damian Schenkelman

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы