Одним из решений было бы сделать ListBox и ListBoxItems не фокусируемыми, пока вы не будете готовы к тому, чтобы пользователь их изменил. Вот быстрый макет, который выполнил это:
XAML:
<StackPanel>
<ListBox x:Name="LB">
<ListBoxItem Focusable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=Focusable}" Content="item 1"/>
<ListBoxItem Focusable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=Focusable}" Content="item 2"/>
<ListBoxItem Focusable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=Focusable}" Content="item 3"/>
<ListBoxItem Focusable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=Focusable}" Content="item 4"/>
<ListBoxItem Focusable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=Focusable}" Content="item 5"/>
<ListBoxItem Focusable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=Focusable}" Content="item 6"/>
</ListBox>
<Button Content="Lock/Unlock" Click ="Button_Click"/>
</StackPanel>
Код:
private void Button_Click(object sender, RoutedEventArgs e)
{
if (LB.Focusable == true)
LB.Focusable = false;
else
LB.Focusable = true;
}