【问题标题】:Get Width Available for Children in a Scrollviewer获取 Scrollviewer 中子项可用的宽度
【发布时间】:2009-06-01 17:34:51
【问题描述】:

如何获取 XAML 中滚动查看器的子项可用的宽度?谢谢。

【问题讨论】:

    标签: wpf scrollviewer


    【解决方案1】:

    据我所知,没有直接的方法可以做到这一点,因为 WPF 会自动将可用空间传递给子控件的 Measure() 函数,以便它们调整大小以适应可用空间。

    请注意,默认情况下,它在垂直方向上传递无穷大,因为内容可以永远垂直滚动。您可以更改滚动条在垂直和水平方向上的可见性,以影响是垂直、水平还是同时传递无穷大。

    确定子控件在纯 XAML 中实际必须布局多宽的最佳方法是创建一个空控件(例如,一个空网格),然后绑定到其 ActualWidth 属性:

    <ScrollViewer>
        <StackPanel>
            <Grid x:Name="MeasureGrid"/>
            <TextBox Text="{Binding ElementName=MeasureGrid, Path=ActualWidth}"/>
        </StackPanel>
    </ScrollViewer>
    

    除了显示控件实际可用的宽度之外,我在 XAML 中看不到此信息的任何其他用途 - 我能想到的所有其他方案都可以隐式使用此信息。你能告诉我们更多关于你想要完成的事情吗?

    【讨论】:

    • 问题是 TabItem 没有占用 TabControl 的所有可用空间(除非我遗漏了什么)。所以我一直在将我的元素扩展到选项卡控件的宽度,我现在需要放置一个滚动查看器,但我无法弄清楚我的元素的宽度。
    • 默认情况下,TabItem 的内容应该填满可用空间。您是否无意中设置了 Horizo​​ntal/VerticalAlignment 属性?
    • 也许吧?这是一个简单的 xaml,其中按钮不填充 TabItem 空间。
    • DockPanel sn-p 在空白项目中工作正常。可能正在发生的事情是您将 DockPanel 放在允许它缩小到其内容大小的东西中 - 如果设置了 Horizo​​ntal/VerticalAlignment 就会发生这种情况。尝试用 Rectangle 替换整个控件,然后使用父面板和/或 Horizo​​ntal/VerticalAlignment 属性,直到矩形填满可用空间。或者编辑您的问题并提供更多代码,以便我们更好地了解所涉及的其他控件。
    猜你喜欢
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2020-10-17
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多