在我的WPF项目中,我有一个自制的时间线可视化。网格的每一行是一小时(例如,上午9点,上午10点,依此类推),从左到右,分钟从0增加到60.
假设活动的时间为晚上9:50至晚上10:30。它通过一些自定义控件可视化,使其宽度和位置适应时间线"中的相应时间。我可以打破相同的控件以继续下一行吗?我知道Wrap面板可以做到这一点,但只能在两个独立的控件之间进行。
提前致谢。
答案 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>