Untergeordnete Elemente des Scrollviewer verhindern das Scrollen mit dem Mausrad?
Ich habe ein Problem damit, das Mausrad in der folgenden XAML zum Scrollen zu bringen, die ich aus Gründen der Übersichtlichkeit vereinfacht habe:
<ScrollViewer
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible"
CanContentScroll="False"
>
<Grid
MouseDown="Editor_MouseDown"
MouseUp="Editor_MouseUp"
MouseMove="Editor_MouseMove"
Focusable="False"
>
<Grid.Resources>
<DataTemplate
DataType="{x:Type local:DataFieldModel}"
>
<Grid
Margin="0,2,2,2"
>
<TextBox
Cursor="IBeam"
MouseDown="TextBox_MouseDown"
MouseUp="TextBox_MouseUp"
MouseMove="TextBox_MouseMove"
/>
</Grid>
</DataTemplate>
</Grid.Resources>
<ListBox
x:Name="DataFieldListBox"
ItemsSource="{Binding GetDataFields}"
SelectionMode="Extended"
Background="Transparent"
Focusable="False"
>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style
TargetType="ListBoxItem"
>
<Setter
Property="Canvas.Left"
Value="{Binding dfX}"
/>
<Setter
Property="Canvas.Top"
Value="{Binding dfY}"
/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>
</ScrollViewer>
Optisch ist das Ergebnis ein Bereich bekannter Größe, in demDataField
Aus einer Sammlung gelesene s können mit dargestellt werdenTextBox
es, die willkürliche Position, Größe usw. haben. In Fällen, in denen dieListBox
Der gestaltete "Bereich" ist zu groß, um auf einmal angezeigt zu werden. Horizontales und vertikales Scrollen ist möglich, jedoch nur mit den Bildlaufleisten.
Zur Verbesserung der Ergonomie und Gesundheit sollte das Scrollen mit dem Mausrad normalerweise möglich seinScrollViewer
würde damit automatisch umgehen, aber dasListBox
scheint, diese Ereignisse so zu übergeben, dass der ElternteilScrollViewer
sieht sie nie. Bisher konnte ich nur das Scrollen mit dem Rad in Gang setzenIsHitTestVisible=False
entweder für dieListBox
oder die ElternGrid
Aber natürlich funktioniert danach keines der Mausereignisse des untergeordneten Elements.
Was kann ich tun, um das zu gewährleisten?ScrollViewer
werden Mausrad-Ereignisse angezeigt, während andere für untergeordnete Elemente beibehalten werden?
Edit: Das habe ich gerade gelerntListBox
hat eine eingebauteScrollViewer
Das ist wahrscheinlich Rad Ereignisse von den Eltern zu stehlenScrollViewer
und das Angeben einer Steuerungsvorlage kann es deaktivieren. Ich werde diese Frage aktualisieren, wenn das Problem dadurch behoben wird.