Workaround layouting bug with ScrollableBase
authorLukasz Stanislawski <lukasz.stanislawski@gmail.com>
Thu, 2 Apr 2020 12:59:44 +0000 (14:59 +0200)
committerLukasz Stanislawski <lukasz.stanislawski@gmail.com>
Thu, 2 Apr 2020 12:59:44 +0000 (14:59 +0200)
Oobe/OobeCommon/Controls/CarouselPicker.cs
Oobe/OobeLanguage/LanguageStep.cs

index 1e2c0959ab003460f468535d8da73285233ea352..2ef4f61d073a1152aee92a03549370bfb5a9c913 100644 (file)
@@ -57,9 +57,10 @@ namespace Oobe.Common.Controls
             }
             set
             {
+                //always scroll
+                scrollableBase.ScrollToIndex(value);
                 if (selectedItemIndex != value)
                 {
-                    scrollableBase.ScrollToIndex(value);
                     SelectedItemChanged?.Invoke(this, null);
                     selectedItemIndex = value;
                 }
index 4fdfaf91faf88c7a4deb24d17ef87f37dbb167ba..982514e9669231250da4e8e4b1aecc04d17414c4 100644 (file)
@@ -51,6 +51,7 @@ namespace Oobe.Language
                 item.Text = info.LocalName;\r
                 carousel.AddItem(item);\r
             }\r
+\r
             int currentIndex = manager.Languages.FindIndex(x => x == manager.CurrentLanguage);\r
             carousel.SelectedItemIndex = currentIndex;\r
 \r
@@ -81,6 +82,16 @@ namespace Oobe.Language
             container.Add(btn);\r
             container.Add(carousel);\r
 \r
+            // workaround issue with ScrollableBase not properly scrolling\r
+            // to nth page during creation\r
+            Timer timer = new Timer(500);\r
+            timer.Tick += (sender, args) => {\r
+                int index = manager.Languages.FindIndex(x => x == manager.CurrentLanguage);\r
+                carousel.SelectedItemIndex = index;\r
+                return false;\r
+            };\r
+            timer.Start();\r
+\r
             return container;\r
         }\r
     }\r