У меня проблема с прокруткой для моего приложения WPF.
Вот предложение.Мой пользовательский интерфейс выглядит следующим образом:
Роль моего приложения заключается в том, чтобы выступать в качестве центрального концентратора для многих приложений и запускать их.Администратор может запустить дамп, записанный другим пользователем.Поэтому у меня есть ListView
, показывающий список приложений, который можно прокручивать при необходимости.Я определил GroupStyle
, чтобы показать расширители и эмулировать представление Windows Explorer.Все работает нормально, у меня просто проблема: при прокрутке колесиком мыши компонент синего цвета («Режим запуска»), кажется, ловит фокус и останавливает прокрутку.Особенно это означает, что если моя мышь находится вне этого контроля, прокрутка в порядке.Но когда мышь входит в этот элемент управления, я больше не могу прокручивать.Я попытался изменить свойство Focusable
и установить его на False
везде, где мог, но ничего не изменилось.Я предполагаю, что это, наконец, не проблема фокуса.У кого-нибудь есть идеи о том, как избежать прокрутки, которая может быть захвачена элементом?
Вот некоторые (упрощенные, некоторые бесполезные свойства удалены, чтобы сделать его как можно более понятным) XAML для содержимого экспандера:
<StackPanel Orientation="Vertical" VerticalAlignment="Top" >
<ToggleButton>
<!-- ToggleButton Content... -->
</ToggleButton>
<!-- This is the custom component in which you can see "Launch mode" -->
<my:UcReleaseChooser >
<!-- Properties there. I tried to set Focusable to False, no impact... -->
</my:UcReleaseChooser>
</StackPanel>
И код для UcReleaseChooser
:
<StackPanel HorizontalAlignment="Stretch"
Focusable="False" ScrollViewer.CanContentScroll="False">
<ListBox ItemsSource="{Binding ListChosenReleases}" BorderBrush="LightGray" Background="AliceBlue"
HorizontalAlignment="Stretch" Focusable="False" ScrollViewer.CanContentScroll="False">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"
Focusable="False" ScrollViewer.CanContentScroll="False"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel LastChildFill="True" HorizontalAlignment="Stretch"
Focusable="False" ScrollViewer.CanContentScroll="False">
<TextBlock DockPanel.Dock="Top"
HorizontalAlignment="Left" Text="{Binding Key}"
FontStyle="Italic"/>
<ListBox DockPanel.Dock="Bottom"
HorizontalAlignment="Right" ItemsSource="{Binding Value}"
BorderBrush="{x:Null}" Background="AliceBlue"
Focusable="False" ScrollViewer.CanContentScroll="False">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Focusable="False"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<-- Blah blah about style -->
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<RadioButton Content="{Binding Key}" Margin="3"
IsChecked="{Binding Path=IsSelected, Mode=TwoWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListBoxItem}}}"
Focusable="False" ScrollViewer.CanContentScroll="False"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
Как видите, UcReleaseChooser
содержит список RadioButton
списков.Я пытался установить Focusable
& CanContentScroll
на False
везде, где это казалось уместным, но элемент управления продолжает препятствовать прокрутке основного интерфейса ...
Я думаю, мне следует изменить другое свойство ... Любоеидея?
Спасибо!