2012-09-18 3 views
1

WPF Treeview를 사용하여 OSX-Mail의 Treeview-Control을 모방하고 시작하는 방법을 모르고 싶습니다. "MAILBOXES"및 "SMART MAILBOXES"스크린 샷에는 폴더가 있습니다. 각 폴더 위에 마우스를 올리면 '표시'또는 '숨기기'버튼이 사라집니다. 해당 버튼을 클릭하면 자식을 슬라이드 아웃합니다 (스크린 샷에서 "받은 편지함", "보내기"및 "오늘"). WPF를 사용하여 simular를 어떻게 얻을 수 있습니까? treeview는 좋은 선택인가?fullrow 선택 및 애니메이션이있는 WPF Treeview

고맙습니다. 이 같은

Screenshot

답변

0

보통 일반적인 질문에 StackOverflow에 응답하지 않습니다. 나는 그것을 줄 것이지만, 나는 당신이 할 수있는 것에 대한 개요만을 제공 할 시간이있다.

TreeView를 피하는 것이 제 경험이었습니다. 논리적으로 동작하지 않으며 노드를 검색 할 때 값 비쌉니다.

나는 당신이 ItemTemplate을확장기 제어 인 ItemsControl에를 사용하여 원하는 동작을 얻을 수 있다고 생각합니다. ItemsControl은 폴더를 나타내는 개체 모음에 바인딩됩니다.

그런 다음 DataTemplate을확장기의 헤더는 호버 동작을 모방 할 수 있습니다. 머리글은 두 TextBlocks입니다. 하나는 확장자 (예 : "MAILBOXES")를 식별하는 것이고 다른 하나는 "표시"/ "숨기기"레이블입니다.

기본적으로 "연락처보기"와 "숨기기"텍스트가 확장기으로 IsExpanded 속성에 부착 된 DataTrigger가 설정 한 TextBlock이있다. IsExpanded이 참일 경우 텍스트를 "숨김"으로 설정하고, 거짓이면 "표시"로 설정하십시오.

다음 각 폴더에있는 항목의 나머지를 위해, 당신은 확장기 내부에 ItemsControl에 또는 옵니다를 넣을 수 있습니다. ItemsControl 또는 ListBox ItemsSource을 각 폴더의 항목에 바인딩합니다. 그런 다음 해당 ItemTemplate을 사용하여 선택한 항목을 디자인 할 수 있습니다.