gpt4 book ai didi

wpf - 使用带有 ItemsControl 的 ScrollViewer 和 Canvas 作为 ItemsPanel

转载 作者:行者123 更新时间:2023-12-04 13:22:26 25 4
gpt4 key购买 nike

我有一个 ItemsControl,我将 ItemsPanel 设置为 Canvas。 Canvas 需要能够根据我放入的内容动态调整大小,并且我需要能够在内容超出控件边界时滚动。问题是我无法让内容滚动。我将滚动条可见性设置为自动,因此当内容超出边缘时,我最终不会看到滚动条弹出。

我尝试将 ItemsControl 放在 ScrollViewer 中,并尝试在 ItemsControl 的模板中使用 ScrollViewer。

这是 ScrollViewer 中的 ItemsControl:

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding Tiles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="Canvas.Top" Value="{Binding Top}" />
</Style>
</ItemsControl.ItemContainerStyle>

<ItemsControl.ItemTemplateSelector>
...
</ItemsControl.ItemTemplateSelector>
</ItemsControl>
</ScrollViewer>

这是模板中的 ScrollViewer:
<ItemsControl ItemsSource="{Binding Tiles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="Canvas.Top" Value="{Binding Top}" />
</Style>
</ItemsControl.ItemContainerStyle>

<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>

<ItemsControl.ItemTemplateSelector>
...
</ItemsControl.ItemTemplateSelector>
</ItemsControl>

This post on MSDN看起来很有希望,但是在我的代码中实现它,或者甚至明确地使用 Canvas 代替 WrapPanel 都不起作用(或者,我应该说,我无法让它工作)。

我也看过 this post但该解决方案对我不起作用,因为我需要 Canvas 才能根据内容调整大小(否则滚动条始终可见)。

提前谢谢你!

最佳答案

如果未明确设置 Canvas 的宽度/高度,将从 ItemsControl 继承.您期望的“动态调整大小”行为并不是面板调整大小和布局开箱即用的方式。

您可以选择:

  • 显式设置 ItemsControl宽度/高度。
  • 显式设置 Canvas 宽度/高度。
  • 关于wpf - 使用带有 ItemsControl 的 ScrollViewer 和 Canvas 作为 ItemsPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756882/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com