1. ホーム
  2. .net

[解決済み】ListBox.SelectionMode="None "がないのですが、リストボックスの選択を無効にする他の方法はないでしょうか?

2022-04-14 04:38:42

質問

ListBoxで選択を無効にする方法を教えてください。

解決方法は?

アプローチ1 ItemsControl

の他の部分が必要でなければ ListBox を使用することができます。 ItemsControl の代わりに これは、アイテムを ItemsPanel で、選択という概念がない。

<ItemsControl ItemsSource="{Binding MyItems}" />

デフォルトでは ItemsControl は子要素の仮想化をサポートしません。項目が多い場合は、仮想化によってメモリの使用量を減らし、パフォーマンスを向上させることができます。この場合、アプローチ 2 を使って ListBox または に仮想化を追加します。 ItemsControl .

アプローチ2 - スタイリング ListBox

または、ListBox のスタイルを変更して、選択範囲を表示しないようにします。

<ListBox.Resources>
  <Style TargetType="ListBoxItem">
    <Style.Resources>
      <!-- SelectedItem with focus -->
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                       Color="Transparent" />
      <!-- SelectedItem without focus -->
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                       Color="Transparent" />
      <!-- SelectedItem text foreground -->
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
                       Color="Black" />
    </Style.Resources>
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  </Style>
</ListBox.Resources>