我正在使用wpf滑块显示视频播放器中的时间线。我需要在此基础上添加一些ItemControl,以便我可以在时间线上的某些位置添加按钮(按钮将保持相对于父ItemsControl的位置)。
我应该使用哪些ItemsControl容器来添加知道自己位置的子元素(基于时间码)?我看过Wpf中的不同ItemsControls,看起来他们都有某种方式来堆叠他们的孩子(水平或垂直一个接一个)!
为了增加一些复杂性,子项的定位如何相对于父ItemsControl的宽度?这样可以放大和缩小ItemsContol来重新定位子项!
答案 0 :(得分:2)
允许显式定位的WPF控件是Canvas
。然后,您可以根据需要在子控件上设置Canvas.Left
和Canvas.Top
。
您可以ItemControl
使用Canvas
进行布局,如下所示:
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
编辑:错过了调整大小...
如果您在ViewBox
周围使用ItemsControl
,则内容会自动调整大小,但项目本身也会变大。如果这不合适,那么我认为你必须手动重新定位控件,因为Canvas
不允许这种定位。