2009-09-18 3 views
0

ListBox이 백그라운드 스레드 (주소록이고 데이터가 AD에서 오는 것임)에서 채워지는 상황이 있습니다.WPF : 목록 상자 유지하기

목록이 정렬되고 (CollectionViewSource 사용) 사용자가 더 많은 데이터를 검색하는 동안 목록을 정렬 할 수 있으므로 목록의 여러 위치에 새로운 항목이 삽입 될 때 모든 곳에서 튀는 문제가 있습니다. 따라서 사용자가 사용할 수 있지만 사용자의 선택이 계속 볼 수 없기 때문에 대부분 사용할 수 없습니다.

Focus을 선택한 항목으로 유지하고 항목이 백그라운드 스레드의 선택 항목 위와 아래에 삽입되어 있어도 선택을 유지할 수 있습니까? 나는 그것이 서버에 관한 나쁜 일이 될 수있는 이해 서버에 정렬하지 않는 것이 좋습니다.

+0

목록을 채우고 작업을 시작할 수 있습니까? 아니면 언제든지 데이터가 도착할 수 있습니까? – manji

+0

이상적으로 (의도 한대로) 더 많은 결과가 들어올 때 부분 결과에 대해 작업 할 수 있다는 점이 이상적입니다. 목록 상자를 채우는 동안 잠시 기다릴 필요가 없습니다. –

답변

0

기술적 인 코드 관점보다는 UI 디자인 관점에서 이에 대한 답변을 드리겠습니다. (나는 다른 사람이 목록 상자에서 선택한 항목을 보게하는 방법이있을 것이라고 확신한다.)

나는 많은 양의 데이터를 추가하는 동안 목록 상자를 사용하는 것이 상당히 불가능하다고 주장 할 것이다. 멋지게해라. 사용자가 원하는 항목을 계속 검색하는 동안에는 항목을 계속 볼 수있게된다고 가정 해 보겠습니다. 그러면 항목을 계속 유지할 수 없습니다.

첫 번째로 예상 총로드 시간이 10 초 미만이면로드가 완료 될 때까지 목록 상자를 비활성화 할 수 있습니다. (분명히 회전하는 애니메이션이나 무언가를 회색으로 그려서 사용자가 뭔가를하고있는 것을 볼 수 있습니다.) 이미이 옵션을 기각 한 것으로 가정하면 여기에서 묻지 않을 것입니다. 그러나 나는 이것이 고려 가치가 있다고 생각한다. 로드 시간이 조금이라도 작은 경우 사용자가 실제로로드되는 동안 목록을 탐색 할 수있어 실제로 무엇인가를 얻을 수 있는지 고려하십시오.

둘째, 목록 상자의 내용을 제한하여 한 번에 소량 만 표시되도록하는 방법을 제안합니다. 문자 선택 컨트롤과 함께 알파벳 한 글자로 시작하는 이름 만 표시하면됩니다. 또는 사용자가 처음 몇 글자를 입력 할 수있는 맨 위에 필터 입력 텍스트 상자를 제공 할 수 있으며 목록 상자에는 해당 글자로 시작하는 이름 만 표시됩니다. 이렇게하면 사용자는 "sa"라고 입력 할 수 있고 목록 상자에는 "sam", "samantha", "sacha"등이 표시됩니다. 이제는 목록에 항목 수가 적으므로 주위에 점프 걱정. 목록의 항목 수가 너무 많아지고 (배경 스레드에로드되기 때문에) 목록이 상자 높이를 넘으면 사용자는 단순히 목록을 필터링하기 위해 추가 문자를 입력하기 만하면됩니다.

미안하지만 이것이 정말로 당신이 원하는 것이 아니지만, 대체 디자인을 가져다 놓을 가치가 있다고 생각한다면 간과 할 수 있습니다.

+0

감사합니다. 나는 당신이 말하는 것에 동의하지만 어떻게 수십만 가지의 항목으로 주소록을 구현할 것인가? (이 경우에는 AD에서 나왔지만 Exchange 주소록을 생각해보십시오.) Outlook과 유사한 주소록은 의미가 있습니다. 사람들이 일반적으로 UI 디자인 관점에서 이름을 찾기 위해 편지를 선택해야하는 것은 정말 짜증이납니다. 클릭 수가 적을수록 좋습니다. 현지화에 관해서, 40,000+ 중 일본어 또는 중국어 문자를 정말로 선택 하시겠습니까? –

+0

계속하려면 필터를 구현했지만 표시 데이터를 필터링해야합니다. 문제를 완화하지만 해결하지는 못합니다.서버로 돌아가서 새로운 데이터 세트를 전송하려고하지 않습니다. 또한로드 시간은 AD 서버가 그 순간을 어떻게 느끼 느냐에 따라 15 초에서부터 다릅니다. –