2013-08-02 6 views
7

Ich habe mit einem Problem konfrontiert reproduziert auf .NET 4.0, wenn UIElement.UseLayoutRounding="True" und TextBoxBase.VerticalScrollBarVisibility="Auto" zusammen gesetzt sind. Das Problem wird nur unter Windows Classic Theme reproduziert (getestet unter Windows 7 und XP).WPF fällt in Endlosschleife, wenn UseLayoutRounding = "True"

Wenn das Fenster geladen wird, und dann zeigt WPF versteckt vertikale Bildlaufleiste auf dem Textblock in Endlosschleife, so dass UI unbrauchbar wird.

Markup ist ganz einfach:

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> 

Hat jemand irgendwelche Ideen von Möglichkeiten, dies zu vermeiden?

+0

Ist die Einstellung 'Auto' für die VerticalScrollBarVisibility erforderlich? Kannst du es immer sichtbar machen, damit die Schleife nicht auftritt? –

+0

Das Problem ist, dass wir ungefähr 15K Zeilen XAML haben und es würde eine Menge Zeit brauchen, um jede VerticalScrollBarVisibility zu analysieren und zu aktualisieren. Ich bin mir auch nicht sicher, dass dieses Problem unter anderen Umständen nicht auftreten würde. –

+2

Vielleicht sollten Sie dies als Fehler an Microsoft melden? Sie können dies unter [Microsoft Connect] (http://connect.microsoft.com/VisualStudio/) tun. – Sheridan

Antwort

4

Es gibt etwas sehr funky geht in TextBoxView, der Referenz Source für .NET 4.5 Dokumente Bug Nummer 1766924 mit einem Patch, der Hintergrund Layout Berechnung für VerticalScrollBarVisibility = Auto deaktiviert. Zitiert:

 // 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. 
     // 

Dies scheint diesen feedback article verbunden zu werden, die Ihre genaue Beobachtung beschreibt.

bekannt Problem in .NET 4.0, in 4,5 festgelegt. Bitten Sie die Benutzer, die unter diesem Problem leiden, .NET 4.5 auf ihrem Computer zu installieren. Beachten Sie die von rfboilers vorgeschlagene Problemumgehung, wenn Sie XP-Benutzer zufriedenstellen möchten.

+0

Leider hat meine App immer noch ~ 20% XP Benutzer. Also muss ich ihnen auch gefallen. Ich werde die Problemumgehung versuchen und sehen, ob es für die Benutzer funktioniert, die Probleme hatten. Vielen Dank für das Teilen dieser Informationen. Vista + sichtbare Bildlaufleisten, bis alle Benutzer – mephisto123

+0

Die Abhilfe hilft nicht :( Es scheint, ich muss bleiben werde immer wird verwenden und ich in der Lage, .NET 4.5 zu verlangen – mephisto123

-1

Es könnte auf den Stackpanel fällig. Der Scroll-Viewer verliert seine Visualisierung, wenn er sich in einem Stackpanel befindet.

-1

haben Sie ein „sauberes Projekt“ oder „saubere Lösung“ in Visual Studio gemacht? manchmal etwas in den Builds durcheinander

Verwandte Themen