2013-08-31 2 views
2

현재 C# 및 WPF를 처음으로 사용해 보았습니다.ListBox가 탭 변경시 선택을 강조 표시하지 않습니다.

두 개의 탭, tabAtabB이있는 창이 있습니다. 각 탭에는 목록 상자 (거의 동일 함)가 있으며 tabAlistboxA이고 tabBlistboxB입니다. 목록 상자의 항목을 선택하면 해당 항목에 대한 일부 정보가 표시되어 해당 항목이 선택되었음을 알 수 있습니다.

특정 이벤트 E에서 내 응용 프로그램의 논리에 의해 결정되는 listboxA 또는 listboxB의 항목을 강조 표시하고 선택하려고합니다.

시나리오 A는 현재 tabA입니다. E이 발생하면 listboxA의 항목이 선택됩니다. 전화 번호는 listboxA.Focus()이고 listboxA.SelectedItem = item입니다. 이것은 잘 작동합니다. item이 선택되어 항목에 대한 정보가 표시되고 항목이 목록에서 강조 표시됩니다.

시나리오 B, 내 문제가있는 곳은 현재 tabA입니다. E이 발생하면 listboxB의 항목이 선택됩니다. tabControl.SelectedItem = tabB으로 전화하여 탭을 전환하면 정상적으로 작동합니다. 시나리오 A에서와 마찬가지로 listboxB.Focus()을 호출 한 다음 listboxB.SelectedItem = item을 호출합니다. 항목에 대한 정보가 표시 되었기 때문에 항목이 선택되었지만 여기에 항목이 있습니다. 목록 상자에서 항목이 강조 표시되어 있지 않습니다.

tabB에서 tabA으로 변경하는 경우에도 마찬가지입니다. 탭을 변경하면 항상 발생하지만 동일한 탭에 있으면 하이라이트가 제대로 작동합니다.

Focus()을 호출하는 것 외에 탭을 변경 한 후 목록 상자에 포커스를 부여하려면 다른 사람이 있는지 알고 있습니까?

+0

어떤 종류의 이벤트 'E'입니까? –

+0

E는 WPF에서 생성 한 이벤트가 아닙니다. 이벤트 E는 다른 목록 상자 C의 항목을 두 번 클릭한다는 것인데, 이는 사용자 상호 작용이므로 설명에 넣지 않았습니다. – Helena

+1

'listBoxA.SelectedIndex = 2' 또는'listBoxB 포커스를 설정하고'SelectedItem'을 사용하는 대신 .SelectedIndex = 2'을 사용합니까? – keyboardP

답변

0

WPF에 포커스 범위가있는 경우 목록 상자의 범위는 포커스 범위에 맞춰 지지만 범위 자체는 포커스가 맞지 않을 수 있습니다. 또는 목록 상자에 포커스가있을 수 있지만 포커스가 필요한 항목에 대해 별도의 범위가 포함되어 있습니다.

+0

tabB.Focus()와 같은 의미입니까? 나는 tabControl.SelectedItem = tabB 이후에, 그러나 listboxB.Focus() 전에 추가하려고 시도했지만, 불행히도, 아무것도 변경하지 않았다. – Helena

+0

@HelenaStaberg : 아니요, 탭의 내용은 컨트롤 템플릿 내부에있을 수 있기 때문에 필요한 컨트롤을 참조 할 수 있는지 확실하지 않습니다. –

+0

이제는 TabB.Content를 사용하여 내용을 가져 왔습니다. 그런 다음 가져온 Grid에서 Focus()를 호출했지만 아무런 동작도 변경되지 않았습니다. – Helena

관련 문제