在WrapPanel中包装相同的控件

时间:2018-02-09 12:39:50

标签: c# wpf xaml

在我的WPF项目中,我有一个自制的时间线可视化。网格的每一行是一小时(例如,上午9点,上午10点,依此类推),从左到右,分钟从0增加到60.

假设活动的时间为晚上9:50至晚上10:30。它通过一些自定义控件可视化,使其宽度和位置适应时间线"中的相应时间。我可以打破相同的控件以继续下一行吗?我知道Wrap面板可以做到这一点,但只能在两个独立的控件之间进行。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的自定义控件可能包含其他控件,对吧?如果你需要包装,GridView可能不是最好的选择,你不能将一些列移动到新的" line"。相反,您可以将每个事件可视化为例如StackPanel带有一些自定义的东西等。所以你基本上应该在你的控件中包含断行逻辑,这样当你的控件没有得到足够的宽度时,它会将其内部元素移动到一个新的行。如何将WrapPanel包含在您的控件中?

如果要绑定到元素集合并重新定义ListView的内部集合控件,也可以使用普通的ListView,以便水平定位项目。因此,所有事件都会水平堆叠,并在需要时进行换行:

<MyCustomControl>
    <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding ... my events ...}">
      <ListView.ItemsPanel>
        <ItemsPanelTemplate>
          <WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
      </ListView.ItemsPanel>
      ...
    </ListView>
  </MyCustomControl>