aktueller Stand

This commit is contained in:
Meik
2026-02-04 19:01:24 +01:00
parent 5a9e58dcfb
commit a1506f36c9
4 changed files with 107 additions and 52 deletions

View File

@@ -105,10 +105,12 @@
Padding="4"
BorderBrush="{DynamicResource BackgroundColor.Menu.SubCategory.Hover}"
BorderThickness="1">
<ScrollViewer MaxHeight="320"
<ScrollViewer x:Name="PART_CategoryScrollViewer"
MaxHeight="320"
VerticalScrollBarVisibility="Auto"
Background="Transparent"
BorderThickness="0">
BorderThickness="0"
PreviewMouseWheel="CategoryScrollViewer_PreviewMouseWheel">
<TreeView x:Name="PART_TreeView"
Background="Transparent"
BorderThickness="0"

View File

@@ -22,6 +22,7 @@ namespace FasdDesktopUi.Basics.UserControls
private TextBox searchTextBox;
private TreeView treeViewControl;
private ScrollViewer categoryScrollViewer;
public ObservableCollection<HierarchicalSelectionItem> VisibleItems => visibleItems;
@@ -255,6 +256,48 @@ namespace FasdDesktopUi.Basics.UserControls
if (searchTextBox != null)
searchTextBox.TextChanged += SearchTextBox_TextChanged;
}
if (categoryScrollViewer == null)
{
categoryScrollViewer = ComboBoxControl.Template.FindName("PART_CategoryScrollViewer", ComboBoxControl) as ScrollViewer;
}
}
private void CategoryScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
var scroller = categoryScrollViewer ?? sender as ScrollViewer;
if (scroller == null || scroller.ScrollableHeight <= 0)
return;
var lines = SystemParameters.WheelScrollLines;
if (lines < 0)
{
if (e.Delta < 0)
scroller.PageDown();
else
scroller.PageUp();
e.Handled = true;
return;
}
if (lines == 0)
{
scroller.ScrollToVerticalOffset(scroller.VerticalOffset - e.Delta);
e.Handled = true;
return;
}
var direction = e.Delta < 0 ? 1 : -1;
var stepCount = Math.Max(1, Math.Abs(e.Delta) / 120) * lines;
for (var i = 0; i < stepCount; i++)
{
if (direction > 0)
scroller.LineDown();
else
scroller.LineUp();
}
e.Handled = true;
}
private void UpdateDisplaySelection()