Прием не должен действительно отключать. Отключение заблокирует все сообщения от ползунка.
Во время долгой операции отобразите текст серым в поле списка с помощью его.ForeColor свойства и глотайте все щелчки мышью. Это моделирует отключение управления и позволит прокручивать беспрепятственный.
Если Вы заглядываете к шаблону управления ListBox, существует ScrollBar и ItemsPresenter внутри. Поэтому Сделайте ItemsPresenter Отключенным, и Вы получите это легко. Используйте Стиль рева на ListBox, и Вы хороши для движения.
<Style x:Key="disabledListBoxWithScroll" TargetType="{x:Type ListBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}">
<Border x:Name="Bd" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="1">
<ScrollViewer Padding="{TemplateBinding Padding}" Focusable="false">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" IsEnabled="False" IsHitTestVisible="True"/>
</ScrollViewer>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
</Trigger>
<Trigger Property="IsGrouping" Value="true">
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
На ListBox используют Стиль
<ListBox Style="{DynamicResource disabledListBoxWithScroll}" ..... />
В то время как это для Silverlight, возможно, это сообщение в блоге помогло бы Вам начать в правильном направлении? Silverlight Никакой Выбор ListBox и ViewBox
Я использовал это решение, оно действительно простое и отлично работает:
Для каждого элемента SurfaceListBoxItem
, который вы помещаете в Listbox
, сделайте следующее:
item.IsHitTestVisible = false;