代码之家  ›  专栏  ›  技术社区  ›  Marko

带有网格呈现错误的WPF滚动查看器

  •  1
  • Marko  · 技术社区  · 6 年前

    以这个简单的代码为例:

    <window x:class=“wpfApplication1.window2”
    xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”
    xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml”
    title=“window2”height=“340”width=“600”>
    <滚动查看器>
    <grid background=“red”VerticalAlignment=“top”>
    <grid.columndefinitions>
    <columnDefinition width=“auto”minwidth=“20”/>
    <列定义/>
    </grid.columndefinitions>
    
    <grid.rowdefinitions>
    <行定义/>
    <行定义/>
    <行定义/>
    <行定义/>
    </grid.rowdefinitions>
    
    <textBlock grid.row=“0”text=“1:”/>
    <textbox grid.row=“0”grid.column=“1”height=“80”margin=“4”/>gt;
    
    <textBlock grid.row=“1”text=“2:”/>
    <textbox grid.row=“1”grid.column=“1”height=“80”margin=“4”/>gt;
    
    <textBlock grid.row=“2”text=“3:”/>
    
    <textBlock grid.row=“3”grid.column=“0”text=“4.”/>
    和/格栅& GT;
    </scrollviewer>
    &窗/窗;
    < /代码> 
    
    

    Visual Studio设计器正确显示所有内容:

    然而,在运行时,这是结果:

    注意第4行如何不再位于网格内?!呈现在它的外部。 此外,如果缩短窗口,垂直滚动条将变为可见,但它只滚动红色区域。无法滚动查看第4行。

    如果从网格中删除VerticalAlignment=“to p”

    有人能解释地球上发生了什么吗?是微软的bug吗?

    我正在运行Visual Studio 2017社区版(完全更新),Win 10版本1803,其中包含.NET 4.7.2。

    (我认为它与.NET 4.7.2有关,因为直到现在我才注意到这个问题。)

    有一个解决方法,指定-<rowdefinition height=“auto”/>for all rows,but that should not be necessary…

    Visual Studio设计器正确显示所有内容: enter image description here

    然而,在运行时,这是结果: enter image description here

    注意第4行如何不再位于网格内?!呈现在它的外部。 此外,如果缩短窗口,垂直滚动条将变为可见,但它只滚动红色区域。无法滚动查看第4行。

    如果删除 VerticalAlignment="Top" Grid ,则呈现似乎已修复,但滚动仍无法正常工作。

    有人能解释到底发生了什么吗?是微软的bug吗?

    我正在运行Visual Studio 2017社区版(完全更新),Win 10版本1803,其中包含.NET 4.7.2。

    (我认为它与.NET 4.7.2有关,因为直到现在我才注意到这个问题)

    有一个解决方法,请指定- <RowDefinition Height="Auto" /> 对于所有行,但这不应该是必需的…

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sam Bent - MSFT    6 年前

    这是新算法中为*行分配空间的错误。(当应用程序的目标为4.7+或安装了4.7+并设置了switch.system.windows.controls.grid.stardDefinitions canexceedavailablespace=false时,它使用新算法。)

    先前报告了该错误(请参见 https://github.com/Microsoft/dotnet/issues/674 ,并已在4.8中修复(请参见 https://github.com/Microsoft/dotnet-framework-early-access/blob/master/release-notes/NET48/build-3632/dotnet-build-3632-changes.md#wpf )

    推荐文章