Ich habe ein Scroll in einem TabControl, und aus irgendeinem Grund, wenn Sie Registerkarten ändern meine Scroll zu Horizontal springt von 12. Mein Scroll, unter anderem hat ein Listview im Inneren mit einer unbeschränkten Höhe. Es ist ein seltsames Layout, aber alles innerhalb des Scrollers musste druckbar sein, so dass ich den ListView nicht einfach alleine scrollen konnte.WPF - Scroll nicht scrollen, wenn ScrollToHorizontalOffset() aufgerufen wird
Also habe ich versucht, die folgenden Zeilen in der Selection Ereignis des TabControl:
Console.WriteLine(Scroller.HorizontalOffset);
Scroller.ScrollToHorizontalOffset(0);
Console.WriteLine(Scroller.HorizontalOffset);
Und sie drucken zu den beiden 12 heraus Anrufe Console.WriteLine() ... Es bewegt sich auch nicht, aber Sie können blättern von der tatsächlichen Benutzeroberfläche.
Weiß jemand, was dieses seltsame Verhalten verursachen würde?
Ich werde versuchen, geeigneten Code zum Posten zu finden, aber es ist ein großes Projekt und könnte schwierig sein, in einer Beispiellösung neu zu erstellen.
Weitere Informationen:
- Das Problem tritt nur auf, wenn der Inhalt groß genug ist, wo sie kann horizontal scrollen.
- Meine horizontale und vertikale Bildlaufleiste Sichtbarkeit ist Auto, aber das Problem tritt immer noch auf, wenn sie auf Versteckt oder Sichtbar festgelegt sind.
UPDATE:
Wenn Sie meine Listview klicken, die innerhalb des Scroll ist und ein Element auszuwählen, die Scroll scrollt auf diese gleichen 12 Pixel versetzt. Könnte mein Problem mit meinem Fokus auf ListView zusammenhängen? Ruft ein ListView BringIntoView() selbst auf, wenn er den Fokus erhält?
Diese XAML das Problem reproduziert:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window11" Height="300" Width="300">
<TabControl>
<TabItem Header="Tab One">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<ListBox Margin="25,0,0,0" Width="2000">
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
</ListBox>
</ScrollViewer>
</TabItem>
<TabItem Header="Tab Two">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<ListBox Margin="25,0,0,0" Width="2000">
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
<ListBoxItem>WOOT WOOT WOOT WOOT</ListBoxItem>
</ListBox>
</ScrollViewer>
</TabItem>
</TabControl>
</Window>
Slap diese in XamlPad, führen Sie es. Klicken Sie auf eine Registerkarten-Kopfzeile und beachten Sie, dass der ScrollViewer selbst scrollt, spielen Sie damit herum und beachten Sie, wie mein Rand auf der ListBox vom Bildschirm gescrollt wird. Wie verhindere oder behebe ich dieses Problem? Es macht mein Layout in meinem Fall ziemlich janky.
https://go4answers.webhost4life.com/Example/scrollviewer-scrolltohorizontaloffset-51429.aspx –