【发布时间】:2013-09-08 05:17:20
【问题描述】:
我有一个具有X,Y 属性的对象列表。我想将集合放入ItemsControl 并根据其x 和y 定位每个项目。
我不知道 X 或 Y 的最大值。
我尝试使用 Canvas 作为 ItemsControl.ItemsPanel,但 Canvas 不会根据其子项更改其大小。因此 ScrollViewer 无法滚动 ItemsControl。
我检查了How to Visible ScrollBar In Items Panel With Canvas as ItemsPaneltemplate。第一个解决方案是使用 Grid 并设置 Margin。但是,Thickness.X 和 Thickness.Y 不是依赖属性且不可绑定。第二种解决方案还可以,但涉及代码隐藏。最后一个解决方案也应该可行,但编写一个新类很费力。
如何在 ItemsControl 中定位项目并启用滚动?您更喜欢哪种解决方案?
【问题讨论】:
-
将 Canvas
Width和 Height 属性绑定到 ViewModel 中的属性,并让 ViewModel 计算所需的值。这就是我所做的here,它就像一个魅力。 -
@Shoe 不能解决画布尺寸问题,你在说什么?
-
《WPF控件开发释放:构建高级用户体验》一书中有一个雷达屏,它是基于一个ListBox和一个自研的ItemsPanel构建的。该面板根据项目的坐标定位项目,并根据这些坐标确定其首选大小。我相信你可以在某处找到下载源代码。