如何添加一个ItemsControl的子项,孩子们应该在Wpf中决定自己的位置?

时间:2010-03-09 09:55:38

标签: wpf itemscontrol children wpf-positioning

我正在使用wpf滑块显示视频播放器中的时间线。我需要在此基础上添加一些ItemControl,以便我可以在时间线上的某些位置添加按钮(按钮将保持相对于父ItemsControl的位置)。

我应该使用哪些ItemsControl容器来添加知道自己位置的子元素(基于时间码)?我看过Wpf中的不同ItemsControls,看起来他们都有某种方式来堆叠他们的孩子(水平或垂直一个接一个)!

为了增加一些复杂性,子项的定位如何相对于父ItemsControl的宽度?这样可以放大和缩小ItemsContol来重新定位子项!

1 个答案:

答案 0 :(得分:2)

允许显式定位的WPF控件是Canvas。然后,您可以根据需要在子控件上设置Canvas.LeftCanvas.Top

您可以ItemControl使用Canvas进行布局,如下所示:

<ItemsControl>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <Canvas IsItemsHost="True" />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

编辑:错过了调整大小...

如果您在ViewBox周围使用ItemsControl,则内容会自动调整大小,但项目本身也会变大。如果这不合适,那么我认为你必须手动重新定位控件,因为Canvas不允许这种定位。