private void ScrollViewer_OnScrollChanged(object sender, ScrollChangedEventArgs e) { if (VisualTreeHelper.HitTest(AllUtilScrollViewer, Mouse.GetPosition(AllUtilScrollViewer)) == null) { return; } if (MiniUtilsGrid.TranslatePoint(new Point(), AllUtilScrollViewer).Y.LessThanOrClose(13)) { UtilTypeListBox.SelectedValue = null; MiniUtilsRadioButton.IsChecked = true; return; } MiniUtilsRadioButton.IsChecked = false; for (var i = 0; i < AllUtilsItemsControl.Items.Count; i++) { var item = AllUtilsItemsControl.ItemContainerGenerator.ContainerFromIndex(i) as FrameworkElement; if (item.TranslatePoint(new Point(), AllUtilScrollViewer).Y.LessThanOrClose(0)) { if (item.DataContext != null && item.DataContext is ClassifiedUtil) { var classifiedUtil = item.DataContext as ClassifiedUtil; UtilTypeListBox.SelectedValue = classifiedUtil.Type; } } } }
private void MiniUtilsRadioButton_OnClick(object sender, RoutedEventArgs e) { UtilTypeListBox.SelectedValue = null; var yOffset = MiniUtilsGrid.TranslatePoint(new Point(), AllUtilScrollViewer).Y; AllUtilScrollViewer.ScrollToVerticalOffset(AllUtilScrollViewer.VerticalOffset + yOffset - 2); // AllUtilScrollViewer.ScrollToBottom(); }