> 백엔드 개발 > C#.Net 튜토리얼 > WPF 컬렉션 제어는 구분 기호(ItemsControl Separator)를 구현합니다.

WPF 컬렉션 제어는 구분 기호(ItemsControl Separator)를 구현합니다.

Y2J
풀어 주다: 2017-04-20 10:00:59
원래의
2527명이 탐색했습니다.

이 글에서는 주로 WPF 컬렉션 제어 구분 기호 ItemsControl 구분 기호를 자세히 소개합니다. 관심 있는 친구들이 참조할 수 있습니다.

은 WPF 컬렉션 제어 사이에 구분 기호 스타일을 삽입하는 경우가 많습니다. 각 컬렉션 항목이 있지만 WPF의 ItemsControl에는 관련 기능이 직접 구현되어 있지 않으므로 국가를 구하기 위한 곡선만 고려할 수 있습니다. 연구 후에 아마도 다음 두 가지 구현 방법을 생각했을 것입니다.

먼저 ItemsControl의 데이터 템플릿을 다음과 같이 작성합니다.


<ItemsControl ItemsSource="{Binding Source}" BorderThickness="1" BorderBrush="Blue" VerticalAlignment="Stretch">
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <Grid>
    <Grid.RowDefinitions>
     <RowDefinition Height="Auto" />
     <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Border Name="Bd" Grid.Row="0" Height="1" Background="Red" />
    <TextBlock Grid.Row="1" Text="{Binding}" />
   </Grid>
  </DataTemplate>
 </ItemsControl.ItemTemplate>
</ItemsControl>
로그인 후 복사

Bd라는 이름의 테두리입니다. 구분 기호는 각 항목의 헤더에 표시됩니다. 이제 우리의 목표는 첫 번째 항목의 구분 기호를 숨기는 것입니다. 이렇게 하면 항목 사이에 구분 기호가 있는 목적이 달성됩니다.

첫 번째 구현 방법은 컬렉션 항목을 사용하여 PreviousData를 전방 바인딩하는 가장 간단한 방법입니다. 이는 네 가지 바인딩 방법 중 하나이며 아마도 가장 일반적으로 사용되지 않는 방법일 것입니다. , 그러나 이때 유용하게 사용되는 코드는 다음과 같습니다.


<DataTemplate.Triggers>
 <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}"
     Value="{x:Null}">
  <Setter TargetName="Bd" Property="Visibility" Value="Collapsed" />
 </DataTrigger>
</DataTemplate.Triggers>
로그인 후 복사

항목의 이전 항목이 비어 있으면 구분 기호를 숨길 수 있습니다. 간단한 코드 한 줄로 완료되었습니다. 그러나 이 구현 방법의 한 가지 단점은 바인딩된 데이터 소스의 앞에 데이터를 추가하기 위해 Insert 메서드를 사용하는 경우 큐의 끝이나 큐의 끝에 데이터를 추가하면 구분 기호가 없는 항목이 두 개 이상 나타난다는 것입니다. 대기열 중간에는 대기열이 없습니다. 이 문제가 발생합니다.

두 번째 구현은 ItemsControlAlternationCount AlternationIndex 속성은 컬렉션 항목의 인덱스 번호를 표시한 다음 인덱스 번호가 0인 항목의 구분 기호를 숨깁니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

         VerticalAlignment="Stretch" AlternationCount=" {Binding Source.Count}">

먼저 AlternationCount를 ItemsControl에 있는 데이터 소스의 Count 속성에 바인딩한 다음 ItemsControl의 AlternationIndex 속성이 컬렉션 데이터 소스의 인덱스 번호를 지정하려면 트리거에 논리를 작성하세요.


<Border Name="Bd" Grid.Row="0" Height="1" Background="Red">
 <Border.Style>
  <Style TargetType="{x:Type Border}">
   <Style.Triggers>
    <DataTrigger
     Binding="{Binding Path=(ItemsControl.AlternationIndex), 
   RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}}}"
     Value="0">
     <Setter Property="Visibility" Value="Collapsed" />
    </DataTrigger>
   </Style.Triggers>
  </Style>
 </Border.Style>
</Border>
로그인 후 복사

트리거는 인덱스 번호가 0일 때 숨겨지도록 결정합니다Border, 이 방법은 코드의 양이 많지 않고, 팀의 선두에 삽입하든, 꼬리에 삽입하든 이 기능을 확실히 구현할 수 있다는 장점이 있지만 AlternationCount AlternationIndex 속성의 원래 의미는 인터레이스 색상 변경 등의 기능을 구현하는 것이므로 이 기능이 이때 사용됩니다. 컬렉션이 구분 기호와 대체 선 스타일 기능을 모두 구현하려는 경우 추가 변환기를 추가해야 할 수도 있지만 변환기의 내용도 나머지를 찾아 이전 기능을 복원할 수 있습니다.

위 내용은 WPF 컬렉션 제어는 구분 기호(ItemsControl Separator)를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
wpf
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿