动态创建元素并将它们绑定到List <t> </t>

时间:2010-09-28 13:13:33

标签: c# wpf data-binding dynamic mvvm

我有ObservableCollection<Class1>其中Class1包含xy个位置作为属性。列表可以是任何大小。我有一个ViewModel,它将集合公开为属性。在我看来,我想基于集合生成元素列表,然后根据Class1对象的属性设置它们的x和y位置。

我该怎么做?我知道我可以轻松地将集合控件(如List View)绑定到Collection。但我需要绑定它,元素使用x,y属性将自己定位在画布上。任何想法都赞赏。

2 个答案:

答案 0 :(得分:1)

您可以在ItemsControl中使用Canvas作为ItemsPanel,然后将ItemContainerStyle上的Canvas.Top和Canvas.Left属性绑定到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>

答案 1 :(得分:0)

您可以使用Collection View或类似的东西来实现这一目标。

我希望这会有所帮助。

谢谢, 了Damián