|
@@ -15,8 +15,10 @@ namespace ControlCatalog.Pages
|
|
|
private readonly ItemsRepeaterPageViewModel _viewModel;
|
|
private readonly ItemsRepeaterPageViewModel _viewModel;
|
|
|
private ItemsRepeater _repeater;
|
|
private ItemsRepeater _repeater;
|
|
|
private ScrollViewer _scroller;
|
|
private ScrollViewer _scroller;
|
|
|
|
|
+ private int _selectedIndex;
|
|
|
private Button _scrollToLast;
|
|
private Button _scrollToLast;
|
|
|
private Button _scrollToRandom;
|
|
private Button _scrollToRandom;
|
|
|
|
|
+ private Button _scrollToSelected;
|
|
|
private Random _random = new Random(0);
|
|
private Random _random = new Random(0);
|
|
|
|
|
|
|
|
public ItemsRepeaterPage()
|
|
public ItemsRepeaterPage()
|
|
@@ -26,10 +28,12 @@ namespace ControlCatalog.Pages
|
|
|
_scroller = this.FindControl<ScrollViewer>("scroller");
|
|
_scroller = this.FindControl<ScrollViewer>("scroller");
|
|
|
_scrollToLast = this.FindControl<Button>("scrollToLast");
|
|
_scrollToLast = this.FindControl<Button>("scrollToLast");
|
|
|
_scrollToRandom = this.FindControl<Button>("scrollToRandom");
|
|
_scrollToRandom = this.FindControl<Button>("scrollToRandom");
|
|
|
|
|
+ _scrollToSelected = this.FindControl<Button>("scrollToSelected");
|
|
|
_repeater.PointerPressed += RepeaterClick;
|
|
_repeater.PointerPressed += RepeaterClick;
|
|
|
_repeater.KeyDown += RepeaterOnKeyDown;
|
|
_repeater.KeyDown += RepeaterOnKeyDown;
|
|
|
_scrollToLast.Click += scrollToLast_Click;
|
|
_scrollToLast.Click += scrollToLast_Click;
|
|
|
_scrollToRandom.Click += scrollToRandom_Click;
|
|
_scrollToRandom.Click += scrollToRandom_Click;
|
|
|
|
|
+ _scrollToSelected.Click += scrollToSelected_Click;
|
|
|
DataContext = _viewModel = new ItemsRepeaterPageViewModel();
|
|
DataContext = _viewModel = new ItemsRepeaterPageViewModel();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -121,6 +125,7 @@ namespace ControlCatalog.Pages
|
|
|
{
|
|
{
|
|
|
var item = (e.Source as TextBlock)?.DataContext as ItemsRepeaterPageViewModel.Item;
|
|
var item = (e.Source as TextBlock)?.DataContext as ItemsRepeaterPageViewModel.Item;
|
|
|
_viewModel.SelectedItem = item;
|
|
_viewModel.SelectedItem = item;
|
|
|
|
|
+ _selectedIndex = _viewModel.Items.IndexOf(item);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void RepeaterOnKeyDown(object sender, KeyEventArgs e)
|
|
private void RepeaterOnKeyDown(object sender, KeyEventArgs e)
|
|
@@ -140,5 +145,10 @@ namespace ControlCatalog.Pages
|
|
|
{
|
|
{
|
|
|
ScrollTo(_random.Next(_viewModel.Items.Count - 1));
|
|
ScrollTo(_random.Next(_viewModel.Items.Count - 1));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private void scrollToSelected_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
|
|
|
|
|
+ {
|
|
|
|
|
+ ScrollTo(_selectedIndex);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|