UseLayoutRounding =“True”时,WPF陷入无限循环

时间:2013-08-02 12:38:27

标签: wpf visual-studio-2010 xaml .net-4.0

UIElement.UseLayoutRounding="True"TextBoxBase.VerticalScrollBarVisibility="Auto"设置在一起时,我遇到了在.NET 4.0上重现的问题。 该问题仅在Windows经典主题(在Windows 7和XP上测试)上重现。

当窗口加载时,WPF显示然后在无限循环中隐藏TextBlock上的垂直滚动条,以便UI变得不可用。

标记非常简单:

App.xaml

<Application x:Class="PhysioControl.CodeStat.UI.Reviewer.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindowView.xaml"/>

MainWindowView.xaml

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        UseLayoutRounding="True">
    <StackPanel>
        <TextBox VerticalScrollBarVisibility="Auto"/>
    </StackPanel>
</Window>

有没有人想办法避免这种情况?

3 个答案:

答案 0 :(得分:5)

TextBoxView中有一些非常时髦的东西,.NET 4.5的参考源文档错误号为1766924,其补丁禁用了VerticalScrollBarVisibility = Auto的背景布局计算。引用:

        // Workaround for bug 1766924.
        // When VerticalScrollBarVisiblity == Auto, there's a problem with
        // our interaction with ScrollViewer.  Disable background layout to
        // mitigate the problem until we can take a real fix in v.next.
        //

这似乎与此feedback article相关联,用于描述您的确切观察结果。

.NET 4.0中的已知问题,已在4.5中修复。要求遇到此问题的用户在其计算机上安装.NET 4.5。如果您需要让XP用户满意,请注意rfboilers提出的解决方法。

答案 1 :(得分:-1)

这可能是由于Stackpanel造成的。当滚动查看器位于堆叠面板内时,它将失去可视化效果。

答案 2 :(得分:-1)

您是否在Visual Studio中完成了“清洁项目”或“清洁解决方案”? 有时构建中的某些东西搞砸了