Wpf 在Scrollviewer中获取可用于子对象的宽度

Wpf 在Scrollviewer中获取可用于子对象的宽度,wpf,scrollviewer,Wpf,Scrollviewer,如何在XAML中获得滚动查看器子项的可用宽度?谢谢。据我所知,没有直接的方法可以做到这一点,因为WPF会自动将可用空间传递给子控件的Measure()函数,以便它们的大小适合可用空间 请注意,默认情况下,它在垂直方向上无限传递,因为内容可以永远垂直滚动。您可以在垂直和水平方向上更改滚动条的可见性,以影响是垂直传递无穷大,水平传递无穷大,还是同时传递无穷大 计算子控件在纯XAML中的实际布局宽度的最佳方法是创建一个空控件(例如,一个空网格),然后绑定到其ActualWidth属性: <Scr

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

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

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

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

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


除了显示控件实际可用的宽度外,我看不到该信息在XAML中的任何其他用途,不过,我所能想到的所有其他场景都可以隐式使用该信息。您能给我们提供更多关于您试图实现的目标的信息吗?

问题是TabItem并没有占用TabControl的所有可用空间(除非我遗漏了什么)。因此,我一直在将我的元素扩展到选项卡控件的宽度,我现在需要放置一个scrollviewer,但我无法计算出元素的宽度。默认情况下,选项卡项的内容应该填充可用空间。您是否无意中设置了水平/垂直对齐属性?可能?下面是一个简单的xaml,其中按钮不填充TabItem空间。测试DockPanel代码段在空白项目中是否正常工作。可能发生的情况是,您将DockPanel放在某个东西中,使其缩小到其内容的大小-如果设置了水平/垂直对齐,就会发生这种情况。尝试将整个控件替换为矩形,然后使用父面板和/或水平/垂直对齐属性,直到矩形填满可用空间。或者编辑您的问题并提供更多代码,以便我们更好地了解涉及的其他控件。