C# 将同一控件包装到包装中

C# 将同一控件包装到包装中,c#,wpf,xaml,C#,Wpf,Xaml,在我的WPF项目中,我有一个自制的时间轴可视化。网格的每一行是一小时e。G上午9点、上午10点等等,从左到右,分钟数从0增加到60 假设事件范围为晚上9:50到10:30。它由一些自定义控件可视化,该控件将其宽度和位置与时间线中的相应时间相匹配。我可以中断同一个控件以继续下一行吗?我知道包裹面板可以做到这一点,但只能在两个单独的控件之间 提前感谢。您的自定义控件可能由其他控件组成,对吗?如果需要换行,GridView可能不是最佳选择,因为无法将某些列移动到新行。相反,您可以将每个事件可视化为带有

在我的WPF项目中,我有一个自制的时间轴可视化。网格的每一行是一小时e。G上午9点、上午10点等等,从左到右,分钟数从0增加到60

假设事件范围为晚上9:50到10:30。它由一些自定义控件可视化,该控件将其宽度和位置与时间线中的相应时间相匹配。我可以中断同一个控件以继续下一行吗?我知道包裹面板可以做到这一点,但只能在两个单独的控件之间


提前感谢。

您的自定义控件可能由其他控件组成,对吗?如果需要换行,GridView可能不是最佳选择,因为无法将某些列移动到新行。相反,您可以将每个事件可视化为带有一些自定义内容的StackPanel等。因此,您基本上应该将换行逻辑包含到控件中,以便当控件没有获得足够的宽度时,它会将其内部元素移动到新行。在你的控制中加入一个包裹怎么样

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

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