ListBoxの境界線を非表示にし、選択したアイテムの背景を選択していないアイテムと同じにしたいのですが。
どうすればよいですか?
境界線を非表示にするには、
<ListBox BorderThickness="0"/>
選択したくない場合は、のItemsControl
代わりにを使用してListBox
ください。
次のコードは、リストボックスの周囲の境界線を非表示にし、アイテムの背景を常に白で表示します(ItemsSource
-propertyを介して生成された場合)。
<ListBox BorderThickness="0" HorizontalContentAlignment="Stretch">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="White">
<ContentPresenter Content="{Binding}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ListViewItem-instancesを使用する場合は、そこで背景を変更する必要があります。
アップデート
<ListBox BorderThickness="0" HorizontalContentAlignment="Stretch" >
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
</Style.Resources>
</Style>
</ListBox.Resources>
</ListBox>
これはListBoxItem-instancesでも機能するはずであり、IMOの「回避策」は少なくなります。