본문 바로가기
IT/WPF

ListBox 배경색 변경(선택색상 및 기본 색상)

by ^&**&^ 2022. 11. 22.
반응형

ListView를 사용하여 목록을 타일처럼 표시하기도 하는데 ListView는 배경색이나 선택 색상을 변경할 때 조금 힘든 부분이 있습니다. 그래서 배경이나 이미지를 사용하여 처리할 때는 ListView보다는 ListBox를 사용하는 것이 좋은데요. 아래는 ListBox를 사용하여 배경색이나 선택 색상을 변경할 수 있는 WPF View 코드입니다. 

 

 

ListBox 스타일 정의

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 <Window.Resources>
        <Style x:Key="ListBoxStyle1" TargetType="ListBoxItem" >
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border Background="{TemplateBinding Background}" BorderThickness="1" CornerRadius="5">
                            <Grid Width="100">
                                <Grid.RowDefinitions>
                                    <RowDefinition></RowDefinition>
                                    <RowDefinition></RowDefinition>
                                    <RowDefinition></RowDefinition>
                                    <RowDefinition></RowDefinition>
                                </Grid.RowDefinitions>
                                <TextBlock Grid.Row="0" Margin="5,0,0,0" Text="{Binding PART_NO}" />
                                <TextBlock Grid.Row="1" Margin="5,0,0,0" Text="{Binding PART_NAME}" />
                                <TextBlock Grid.Row="2" Margin="5,0,0,0" Text="{Binding USER_ID}" />
                                <TextBlock Grid.Row="3" Margin="5,0,0,0" Text="{Binding USER_NAME}" />
                            </Grid>
                        </Border>
 
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsVisible" Value="True">
                                <Setter Property="Background" Value="Red" />
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="Black" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="#ffffcc00" />
                            </Trigger>
                            <Trigger Property="IsFocused" Value="True">
                                <Setter Property="Background" Value="#00aa88" />
                            </Trigger>
                        </ControlTemplate.Triggers >
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        
    </Window.Resources>
cs

 

 

실제 사용 코드

1
2
3
4
5
6
7
8
9
10
11
<ListBox x:Name="xlist" 
        SelectionMode="Single" 
        ItemContainerStyle="{StaticResource ListBoxStyle1}">
<ListBox.ItemsPanel>
   <ItemsPanelTemplate>
       <WrapPanel></WrapPanel>
       </ItemsPanelTemplate>
   </ListBox.ItemsPanel>
</ListBox>
            
cs

 

결과

 

너비를 지정하는 부분은 소스코드에서 Load나 SizeChanged 이벤트에서 처리해야 합니다.

반응형

댓글