首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Canvas作为ItemsPaneltemplate在项目面板中显示ScrollBar

如何使用Canvas作为ItemsPaneltemplate在项目面板中显示ScrollBar
EN

Stack Overflow用户
提问于 2012-05-27 16:40:40
回答 2查看 1.7K关注 0票数 1

在我的应用程序中,我使用Canvas作为ItemsPanelTemplate的ItemsControl。itemspanel源的项目是thumb对象,可以拖拽。如果项目从屏幕视图中消失,我将无法滚动查看它们。我想怎么做?我的代码如下:

代码语言:javascript
复制
            <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-27 16:56:43

首先,您需要用一个ScrollViewer包围ItemsControl (不像ListBox,它在其控件模板中包含它):

代码语言:javascript
复制
<ScrollViewer>
    <ItemsControl> ... </ItemsControl>
<ScrollViewer>

其次,Canvas不会在其子对象之后调整自身的大小。所以你有几个选择:

画布使用具有单个单元格的网格,使用properties.

  • Inherit property.

  • Calculate
  • Margin设置位置,设置画布的WidthHeight画布的大小,并覆盖MeasureOverride方法,以便它们反映孩子的大小。(请参阅此answer.)
票数 2
EN

Stack Overflow用户

发布于 2021-09-09 03:27:36

我通过设置/更新CanvasHeight解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10772729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档