반응형
List를 화면에 표시할때 홀수 번째, 혹은 짝수번째 Item만 Background 색을 바꾸고 싶을때가 있다.
이를 위해서 AlternationCount 와 AlternationIndex를 이용하여 해결하는 방법이 있다.
<ListView VerticalAlignment="Top"
HorizontalAlignment="Stretch"
AlternationCount="2">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="Border"
Padding="0"
CornerRadius="6"
Height="80"
SnapsToDevicePixels="true"
BorderThickness="1">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=(ItemsControl.AlternationIndex)}"
Value="0">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<ContentPresenter Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListViewItem>
<Grid>
</Grid>
</ListViewItem>
<ListViewItem>
<Grid>
</Grid>
</ListViewItem>
<ListViewItem>
<Grid>
</Grid>
</ListViewItem>
<ListViewItem>
<Grid>
</Grid>
</ListViewItem>
</ListView>
AlternationCount는 반복적으로 AlternationIndex의 값을 바꾸기 위한 수치이다.
만약 AlternationCount가 3이라면 AlternationIndex는 0~2 까지 순서대로 나오게 된다.
이점을 이용하여 AlternationIndex를 바인딩하여 Background를 색을 바꾸어주면 된다.
ItemsControl에서도 같은 방식을 이용한다.
<ItemsControl AlternationCount="2">
<ItemsControl.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>1</sys:String>
<sys:String>2</sys:String>
<sys:String>3</sys:String>
<sys:String>4</sys:String>
</x:Array>
</ItemsControl.ItemsSource>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="300" Height="100" x:Name="gridItem"/>
<DataTemplate.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="red" TargetName="gridItem"></Setter>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="blue" TargetName="gridItem"></Setter>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
반응형
'프로그래밍 > WPF' 카테고리의 다른 글
[WPF] 오류 해결: 리소스를 찾을 수 없습니다. 리소스 이름은 대/소문자를 구분합니다. (0) | 2022.09.23 |
---|---|
[WPF] TabControl Header에 Close Button 구현 MVVM 패턴 (1) | 2022.09.21 |
[WPF] ListView ListViewItme 사이의 Margin Padding 제거 (0) | 2022.09.16 |
[WPF] Label & Button 에 언더바 (Under bar) 쓰기 - RecognizesAccessKey (0) | 2022.09.16 |
[WPF] Image Resource 등록 및 사용 (0) | 2022.09.16 |