Czy można zmienić liczbę przewijanych widoków przewijania WPF? Po prostu zastanawiam się, czy można zmienić przeglądarkę tak, że przy użyciu kółka myszy lub strzałek przewijania można zmienić stopień przewijania przyrostowego.Ilość przewijania w Przf ScrollViewer
Odpowiedz
Krótka odpowiedź brzmi: nie da się tego zrobić bez napisania niestandardowego kodu przewijania, ale nie daj się przestraszyć, to nie jest takie trudne.
ScrollViewer działa poprzez przewijanie przy użyciu jednostek fizycznych (np. Pikseli) lub angażując się w implementację IScrollInfo w celu użycia jednostek logicznych. Jest to kontrolowane przez ustawienie the CanContentScroll property, gdzie wartość false oznacza "przewijanie zawartości za pomocą jednostek fizycznych", a wartość prawdziwych środków "przewijaj zawartość logicznie".
W jaki sposób program ScrollViewer przewija zawartość w sposób logiczny? Komunikując się z implementacją IScrollInfo. W ten sposób można przejąć dokładnie to, ile zawartość panelu przewija, gdy ktoś wykonuje logiczną akcję. Take a look at the documentation for IScrollInfo, aby uzyskać listę wszystkich logicznych jednostek miary, które mogą być wymagane do przewijania, ale ponieważ wspomniałeś o kółku myszy, będziesz najbardziej zainteresowany metodami MouseWheelUp/Down/Left/Right.
Możesz zaimplementować zachowanie w przeglądarce przewijania. W moim przypadku CanContentScroll
nie działa. Poniższe rozwiązanie służy do przewijania za pomocą kółka myszy, a także do przeciągania paska przewijania.
public class StepSizeBehavior : Behavior<ScrollViewer>
{
public int StepSize { get; set; }
#region Attach & Detach
protected override void OnAttached()
{
CheckHeightModulesStepSize();
AssociatedObject.ScrollChanged += AssociatedObject_ScrollChanged;
base.OnAttached();
}
protected override void OnDetaching()
{
AssociatedObject.ScrollChanged -= AssociatedObject_ScrollChanged;
base.OnDetaching();
}
#endregion
[Conditional("DEBUG")]
private void CheckHeightModulesStepSize()
{
var height = AssociatedObject.Height;
var remainder = height%StepSize;
if (remainder > 0)
{
throw new ArgumentException($"{nameof(StepSize)} should be set to a value by which the height van be divised without a remainder.");
}
}
private void AssociatedObject_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
const double stepSize = 62;
var scrollViewer = (ScrollViewer)sender;
var steps = Math.Round(scrollViewer.VerticalOffset/stepSize, 0);
var scrollPosition = steps * stepSize;
if (scrollPosition >= scrollViewer.ScrollableHeight)
{
scrollViewer.ScrollToBottom();
return;
}
scrollViewer.ScrollToVerticalOffset(scrollPosition);
}
}
będzie go używać tak:
<ScrollViewer MaxHeight="248"
VerticalScrollBarVisibility="Auto">
<i:Interaction.Behaviors>
<behaviors:StepSizeBehavior StepSize="62" />
</i:Interaction.Behaviors>
Zrobiłem to, aby zapewnić liczb całkowitych na scrollbar1.ValueChanged:
scrollbar1.Value = Math.Round(scrollbar1.Value, 0, MidpointRounding.AwayFromZero)
- 1. WPF: ItemsControl z paskiem przewijania (ScrollViewer)
- 2. C#/WPF - Uzyskaj pozycję przewijania ScrollViewer?
- 3. Wyzwalanie na widoczności paska przewijania ScrollViewer (WPF)
- 4. Widok list wewnątrz scrollviewer zapobiega przewijaniu scrollviewer
- 5. Uzyskaj maksymalną wartość HorizontalScrollView Ilość przewijania
- 6. Osadzanie elementu ItemsControl w ScrollViewer
- 7. jak wyłączyć ScrollViewer automatyczne przenoszenie ScrollViewer w XAML Phone Aplikacja
- 8. jQuery przewijania, aby zakotwiczyć (minus określoną ilość pikseli)
- 9. Zmień kolor tła ScrollBar w ScrollViewer WPF
- 10. WPF: ListView wewnątrz Scrollviewer; Pytanie układowe
- 11. ScrollViewer nie przewija w WPF
- 12. ScrollViewer kradnie fokus
- 13. Jak zwiększyć szerokość paska przewijania w przeglądarce przewijania WPF?
- 14. Prawidłowy sposób ustawiania ScrollViewer (do przewijania w pionie) na ramce WPF?
- 15. Jak przewinąć ScrollViewer w czasie projektowania w mieszance
- 16. Ilość elementów w ArrayList
- 17. WebView wewnątrz ScrollViewer z nagłówkiem elementu XAML
- 18. Wydajność LongListSelector jest bardzo zła, gdy jest zawarta w ScrollViewer
- 19. ScrollViewer nie włączony dla ListView
- 20. Jak dodać siatkę wewnątrz widza przewijania programowo
- 21. Wyłącz przewijanie w pionie przewijania w telefonie z systemem Windows
- 22. typ Ilość w obiekcie JSON
- 23. Policz ilość zapytań w Railsach
- 24. Poziomy pasek przewijania WPF jest niewidoczny.
- 25. Włączanie ScrollViewer HorizontalSnapPoints z wiążącą kolekcją
- 26. Czy istnieje prosty sposób, aby zrobić ScrollViewer "skoczny"?
- 27. Przechwytywanie ManipulationDelta Event z ScrollViewer wewnętrzne (Windows Phone 8.1)
- 28. WPF - Powiększanie obrazu wewnątrz przeglądarki przewijania i dostosowywanie pasków przewijania
- 29. Ilość kompletacji dialogowe
- 30. Ilość string() metoda