c# - 如何将 Canvas 绑定(bind)到矩形列表

标签 c# .net wpf xaml data-binding

使用 WPF,我有一个矩形列表(其中可以包含未定义数量的矩形)和一个 Canvas 。我想使用数据绑定(bind)将这些矩形定位在 Canvas 上。

我尝试过使用项目控件,并且似乎将每个项目堆叠在下一个项目之上,就像垂直堆叠面板一样。

我所有的矩形都有坐标 0,0,但它们都在 Canvas 下方彼此重叠。

使用项目控件的任何替代方法?

最佳答案

绑定(bind)时您需要考虑项目的包装:

<ItemsControl ItemsSource="{Binding Data}">
    <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.ItemTemplate>
        <DataTemplate>
            <!-- Item Template -->
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

关于c# - 如何将 Canvas 绑定(bind)到矩形列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672063/

相关文章:

c# - System.IO.FileNotFoundException : Could not load file or assembly 'System. Web.DataVisualization MEF MVC

.net - 将代码添加到 visual studio 包/扩展中的当前编辑器窗口

c# - 比较 LINQ-to-SQL 中的 byte[] 和使用模拟的单元测试

c# - 序列化和反序列化来自不同位置的对象

c# - 我应该扔/期望扔什么?

wpf - 如何防止 WPF 裁剪我的图像?

c# - 命名空间 "clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"中不存在名称 ChromiumWebBrowser

c# - 有人可以解释一下 Child.Measure(availableSize) 在 silverlight 中的作用吗?

c# - Entity Framework 实体的计算值

c# typemock 获取最后一个案例的模拟结果