2014-02-25 6 views
1

일반적인 문제 일 것 같지만 Google-Fu는 나를 비운 상태로 남겨 두었습니다. 이것이 천 번 전에 물어 보면 사과!마지막 요소에 대해 다른 동작을 사용하는 컬렉션에 대한 데이터 바인딩

컬렉션이 있습니다 (예 : ObservableCollection<Athlete>). 그 컬렉션을 화면에 표시하여 다음과 같이 보이게하려고합니다.

[Jersey Pic] | [저지 Pic] | [저지 Pic] | [저지 그림]

이 고안된 예제의 핵심은 각 그림 사이의 작은 막대입니다. 그 모음을 빼면 ItemsPanelTemplate 가로로 StackPanel, 그 다음은 ItemTemplate으로 컬렉션에 바인딩 된 ListBox이며 각 항목에 해당하는 저지 그림이 표시됩니다. 아무 문제 없습니다!

그렇다면 컬렉션의 마지막 요소를 제외한 모든 그래픽 요소가 될 수있는 막대를 추가하는 방법은 무엇입니까?

감사합니다.

@KornMuffin에서 링크에서 제안한 것처럼
+2

이 [답] (http://stackoverflow.com/a 예를 들어, 내가 막대를 표시 할 Separator을 사용하고, 내가 처음 분리를 숨길 수있는 분리 제어에이 스타일을 추가 할 수 있다고 가정/17990739/512365)에서 아이디어를 얻을 수 있습니다. 그들은'Separator'를'ControlTemplate'에 추가하고'DataTrigger'를 사용하여'Separator'' Visibility'를 제어합니다. – KornMuffin

답변

3

, 당신은 목록 상자 항목의 왼쪽에 막대를 넣을 수 있습니다 :

| [저지 Pic] | [저지 Pic] | [저지 Pic] | [저지 Pic]

그런 다음 이전 데이터가 null 인 경우 첫 번째 막대를 숨기려면 DataTrigger{RelativeSource PreviousData} 바인딩과 함께 사용하십시오.

<Separator.Style> 
    <Style TargetType="Separator"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}"> 
       <Setter Property="Visibility" Value="Collapsed"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Separator.Style> 
+1

좋아, 나는 그 특정한 상대적인 바인딩이 존재했는지 몰랐다. 고맙습니다! – Dan