【问题标题】:Automatic Height not recalculating on wpf window resize自动高度不会在 wpf 窗口调整大小时重新计算
【发布时间】:2019-09-04 04:23:03
【问题描述】:

我在网格行中有一个控件,高度设置为自动。控件的最大高度绑定到网格的实际高度。这样控件将根据其内容调整大小,但如果有大量数据,则不会超出网格的大小 - 它只是获得一个滚动条。这工作得很好。

问题是当我调整窗口大小时。如果我使窗口小于控件的大小,则控件不会调整大小以适应窗口。

如果我随后(使用较小的窗口大小)关闭屏幕并重新打开它,则控件会调整为正确的大小。

当从较小尺寸变为较大尺寸时,控件会展开以占用更多空间。从较大尺寸变为较小尺寸时,它不会调整大小以占用更少的空间

<Grid x:Name="MyGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <ScrollViewer MaxHeight="{Binding ElementName=MyGrid, Path=ActualHeight}">
        <TextBlock Background="Gray" Text="Hello World" Height="700"/>
    </ScrollViewer>
</Grid>

当缩小窗口时,我希望控件会缩小,但它保持相同的高度并且部分保持在屏幕外

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    删除MaxHeight 并将HeightRowDefinition 更改为"*"

    <Grid x:Name="MyGrid">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <ScrollViewer>
            <TextBlock
                Height="700"
                Background="Gray"
                Text="Hello World" />
        </ScrollViewer>
    </Grid>
    

    【讨论】:

      【解决方案2】:

      这完全取决于您打算在这里做什么。

      您可以通过以下方式简化您的标记:

      <Grid x:Name="MyGrid">
          <Grid.RowDefinitions>
              <RowDefinition Height="Auto"/>
          </Grid.RowDefinitions>
          <ScrollViewer MaxHeight="{Binding ElementName=MyGrid, Path=ActualHeight}">
              <TextBlock Background="Gray" Text="Hello World" Height="700"/>
          </ScrollViewer>
      </Grid>
      

      收件人:

          <ScrollViewer>
              <TextBlock Background="Gray" Text="Hello World" Height="700"/>
          </ScrollViewer>
      

      您在网格中只有一个行定义,因此没有行定义。

      网格仅包含滚动查看器 - 网格中没有点。

      事实上,文本块旨在让您滚动长内容,并且模板有它自己的滚动查看器,因此您可以只拥有一个文本块:

      <Window .....
          <TextBlock Background="Gray" 
                     Text="Hello World" 
                     Height="700"
                     ScrollViewer.CanContentScroll="True"
                     ScrollViewer.VerticalScrollBarVisibility="Auto"
                     />
      </Window>
      

      【讨论】:

        猜你喜欢
        • 2012-12-22
        • 2012-01-24
        • 2013-07-13
        • 2013-02-19
        • 1970-01-01
        • 2014-05-16
        • 1970-01-01
        • 2019-06-29
        • 1970-01-01
        相关资源
        最近更新 更多