在我的应用程序中,我使用Canvas作为ItemsPanelTemplate的ItemsControl。itemspanel源的项目是thumb对象,可以拖拽。如果项目从屏幕视图中消失,我将无法滚动查看它们。我想怎么做?我的代码如下:
<ItemsControl ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible">
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding XPosition}"/>
<Setter Property="Canvas.Top" Value="{Binding YPosition}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>发布于 2012-05-27 16:56:43
首先,您需要用一个ScrollViewer包围ItemsControl (不像ListBox,它在其控件模板中包含它):
<ScrollViewer>
<ItemsControl> ... </ItemsControl>
<ScrollViewer>其次,Canvas不会在其子对象之后调整自身的大小。所以你有几个选择:
画布使用具有单个单元格的网格,使用properties.
Margin设置位置,设置画布的Width和Height画布的大小,并覆盖MeasureOverride方法,以便它们反映孩子的大小。(请参阅此answer.)发布于 2021-09-09 03:27:36
我通过设置/更新Canvas的Height解决了这个问题。
https://stackoverflow.com/questions/10772729
复制相似问题