Skip to content

Commit e2eff76

Browse files
committed
Add IsAutoScrollEnabled in HeaderCarousel
1 parent 537aa41 commit e2eff76

3 files changed

Lines changed: 38 additions & 4 deletions

File tree

dev/DevWinUI.Controls/Controls/HeaderCarousel/HeaderCarousel.Properties.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
namespace DevWinUI;
22
public partial class HeaderCarousel
33
{
4+
public bool IsAutoScrollEnabled
5+
{
6+
get { return (bool)GetValue(IsAutoScrollEnabledProperty); }
7+
set { SetValue(IsAutoScrollEnabledProperty, value); }
8+
}
9+
10+
public static readonly DependencyProperty IsAutoScrollEnabledProperty =
11+
DependencyProperty.Register(nameof(IsAutoScrollEnabled), typeof(bool), typeof(HeaderCarousel), new PropertyMetadata(true, OnIsAutoScrollEnabledChanged));
12+
13+
private static void OnIsAutoScrollEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
14+
{
15+
var ctl = (HeaderCarousel)d;
16+
if (ctl != null)
17+
{
18+
ctl.ApplyAutoScroll();
19+
}
20+
}
21+
422
public Stretch ImageStretch
523
{
624
get { return (Stretch)GetValue(ImageStretchProperty); }

dev/DevWinUI.Controls/Controls/HeaderCarousel/HeaderCarousel.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,10 @@ private void HeaderCarousel_Unloaded(object sender, RoutedEventArgs e)
6565

6666
private void HeaderCarousel_Loaded(object sender, RoutedEventArgs e)
6767
{
68-
ResetAndShuffle();
69-
SelectNextTile();
70-
7168
selectionTimer.Tick += SelectionTimer_Tick;
7269
deselectionTimer.Tick += DeselectionTimer_Tick;
73-
selectionTimer?.Start();
70+
71+
ApplyAutoScroll();
7472
}
7573
protected override void OnItemsChanged(object e)
7674
{
@@ -276,4 +274,18 @@ private void Tile_LostFocus(object sender, RoutedEventArgs e)
276274
((HeaderCarouselItem)sender).IsSelected = false;
277275
selectionTimer.Start();
278276
}
277+
278+
private void ApplyAutoScroll()
279+
{
280+
if (IsAutoScrollEnabled)
281+
{
282+
ResetAndShuffle();
283+
SelectNextTile();
284+
}
285+
else
286+
{
287+
selectionTimer?.Stop();
288+
deselectionTimer?.Stop();
289+
}
290+
}
279291
}

dev/DevWinUI.Gallery/Views/Pages/Features/HeaderCarouselPage.xaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
XamlSource="Features/HeaderCarouselPage_xaml.txt">
1818
<local:ControlExample.Pane>
1919
<StackPanel Spacing="10">
20+
<ToggleSwitch x:Name="TGIsAutoScrollEnabled"
21+
Header="IsAutoScrollEnabled"
22+
IsOn="True" />
2023
<ToggleSwitch x:Name="TGIsBlurEnabled"
2124
Header="IsBlurEnabled"
2225
IsOn="True" />
@@ -47,6 +50,7 @@
4750
</StackPanel>
4851
</local:ControlExample.Pane>
4952
<dev:HeaderCarousel BlurAmount="{x:Bind SliderAmount.Value, Mode=OneWay}"
53+
IsAutoScrollEnabled="{x:Bind TGIsAutoScrollEnabled.IsOn, Mode=OneWay}"
5054
IsBlurEnabled="{x:Bind TGIsBlurEnabled.IsOn, Mode=OneWay}"
5155
ItemClick="HeaderCarousel_ItemClick">
5256
<dev:HeaderCarousel.Header>

0 commit comments

Comments
 (0)