[ 질문 ]
ListView의 ItemTemplate를 이용하여 사진과 같이 표현하고 싶은데,
공백화면만 나옵니다.
추가된 아이템의 Text, 이미지가 보이질 않습니다.
// MainWindow.xaml
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Grid.Row="0" Grid.RowSpan="2" >
<Grid>
<Grid.Background>
<ImageBrush ImageSource="/Img/TestImg.jpg" />
</Grid.Background>
</Grid>
</StackPanel>
<TextBlock Text="{Binding files}" Grid.Row="1" Grid.Column="1"/>
<TextBlock Text="{Binding name}" Grid.Row="1" Grid.Column="0"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
[ 오류 테스트 ]
테스트 프로젝트를 생성 - ListView_Template와 관련된 기능만 넣습니다 (+ james.lee 샘플 코드 감사합니다)
Template 정상작동 테스트 완료 후
점차적으로 본 프로젝트와 동일한 환경(UI, 디자인 등)으로 셋팅합니다.
테스트 프로젝트에서 테마 적용 후 본 프로젝트와 동일한 현상 발견
=>
(적용 된 테마에서) ListView에 관한 Style을 확인합니다.
ListView와 관련된 Style-TargetType은 ListView, GridViewColumnHeader, ListViewItem
이렇게 총 3가지 입니다.
어떤 Style에서 문제가 발생하는지 정확히는 모르기에
Style을 하나씩 제거하는 방식으로 점검했습니다.
테마-Style-TargetType: ListViewItem을 제거 했을 때 Item이 정상적으로 출력되었습니다.
=>
새로운 Style을 테마의 ListViewItem을 상속받아 생성 후
Template를 새로 설정 해주어 해결 했습니다.
Or < ListVIew.View >를 이용해 Template를 적용 할 수 있습니다.
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
...
테마를 보면 ListView.View, GridViewColumn와 직접적으로 관련된 Style이 없습니다.
그 이유 중 하나로 안 만들었기 때문에 접근성 인 것 같습니다.
(설명을 못하겠는데요, 커스텀 뷰_PlainView에 관한 내용은 테마보단 스킨에 가까운 것 같습니다.)
ListView, GridViewColumnHeader, ListViewItem의 경우 Style - TargetType로 지정이 가능한 반면
위의 이미지와 같이 바로 지정 해줄 수 없으며, (ListView.View, GridViewColumn의 경우)
ViewBase에서 파생된 PlainView를 통해 설정 할 수 있습니다.
참조 링크 : PlanView 커스텀 뷰 만들기
참조 링크 : ListView.View
참조 링크 : GridViw
[ 개선 방향 ]
아직 사용해보지 못한 기능을 다 같이 구현하려다 보니 문제가 발생했습니다.
그러니 어디서 에러가 발생하는지 갈피를 못 잡겠더군요.
이 점을 해결하기 위해 개발 방식을 변경해야 될 것같습니다
- 테스트 프로젝트 생성
- 적용할 기능 테스트
- 본 프로젝트 적용으로 => 개발 진행