2013-08-02 13 views
7

Ho riscontrato un problema riprodotto su .NET 4.0 quando UIElement.UseLayoutRounding="True" e TextBoxBase.VerticalScrollBarVisibility="Auto" sono impostati insieme. Il problema è riprodotto solo sul tema Windows classico (testato su Windows 7 e XP).WPF cade nel ciclo infinito quando UseLayoutRounding = "True"

Quando la finestra viene caricata, WPF mostra e quindi nasconde la barra di scorrimento verticale su TextBlock in loop infinito in modo che l'interfaccia utente diventi inutilizzabile.

Markup è del tutto semplice:

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> 

Qualcuno ha qualche idea di modi per evitare questo?

+0

È richiesta l'impostazione 'Auto' per VerticalScrollBarVisibility? Puoi impostarlo sempre visibile in modo che il ciclo non si verifichi? –

+0

Il problema è che abbiamo circa 15K linee di XAML e ci vorrebbe molto tempo per analizzare e aggiornare ogni VerticalScrollBarVisibility. Inoltre non sono sicuro che questo problema non si presenterebbe in altre circostanze. –

+2

Forse dovresti segnalarlo a Microsoft come un bug? Puoi farlo a [Microsoft Connect] (http://connect.microsoft.com/VisualStudio/). – Sheridan

risposta

4

C'è qualcosa di molto divertente in TextBoxView, l'origine di riferimento per .NET 4.5 riporta il bug numero 1766924 con una patch che disabilita il calcolo del layout in background per VerticalScrollBarVisibility = Auto. Citando:

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

Questo sembra essere collegato a questo feedback article che descrive la tua osservazione esatto.

Problema noto in .NET 4.0, corretto in 4.5. Chiedi agli utenti che soffrono di questo problema di installare .NET 4.5 sul loro computer. Nota la soluzione alternativa proposta da rfboilers se hai bisogno di mantenere felici gli utenti di XP.

+0

Purtroppo la mia app ha ancora ~ 20% di utenti XP. Quindi devo piacere anche a loro. Proverò la soluzione alternativa e vedrò se funzionerà per quegli utenti che hanno avuto problemi. Grazie per aver condiviso questa informazione. – mephisto123

+0

La soluzione non aiuta :( Sembra che dovrò attenermi alle barre di scorrimento sempre visibili finché tutti gli utenti non utilizzeranno Vista + e potrò richiedere .NET 4.5 – mephisto123

-1

Potrebbe essere dovuto allo Stackpanel. Il visore di scorrimento perderà la visualizzazione quando si trova all'interno di uno stackpanel.

-1

hai fatto un "progetto pulito" o "soluzione pulita" in Visual Studio?

Problemi correlati