2009-05-04 5 views
1

WPF의 ItemsControl은 포커스가 있다고 생각하고 사용자가 Tab 키나 Alt 키를 누르면 포커스 사각형을 표시합니다.왜 부모가 포커스가있을 때 ItemsControl에 포커스 사각형이 표시됩니까?

그러나 에 포커스가 없는데도 ItemsControl에 포커스 사각형이 표시되었습니다. - 부모 중 하나가 포커스를 표시했습니다. ItemsControl은 이 수행 한 다른 UserControl 안에 있던 UserControl 안에 있었고에 포커스가 있습니다. 이런 식으로 뭔가 :

<!-- UserControl1.xaml; this is the control that has focus --> 
<UserControl x:Class="UserControl1" Focusable="True" ...> 
    <UserControl2/> 
</UserControl> 

<!-- UserControl2.xaml --> 
<UserControl x:Class="UserControl2"> 
    <ItemsControl .../> 
</UserControl> 

또는 시각적으로 중첩 보여 없습니다 : 포커스 사각형에서 오는 한 곳을 파악하는 것은 나에게 잠시했다

+---------------------------------------------------+ 
| UserControl1 (has focus)       | 
|             | 
| +-----------------------------------------------+ | 
| | UserControl2         | | 
| |            | | 
| | +-------------------------------------------+ | | 
| | | ItemsControl (shows focus rectangle)  | | | 

(그리고 StackOverflow question을) I 때문에 결코 포커스 사각형을 표시하는 포커스가없는 컨트롤이 필요합니다.

저는 아직 WPF 주위에있는 길을 배우고 있습니다. 그리고 아직 충분히 알지 못합니다. 그렇지 않으면 나 혼란을 겪지 않을 것입니다. 실제로 포커스가없는 경우

  1. ItemsControl에 포커스 사각형을 표시 않지만, 부모 컨트롤 않습니다 중 하나를 두 질문은 나를 이해하는 데 도움이? 이 기능의 이유는 무엇입니까? WPF 메카니즘과 철학에 대해 충분히 이해하지 못했습니다.
  2. 은 어떻게 작동합니까? ItemsControl이 포커스 사각형을 표시해야한다고 결정하는 메커니즘은 무엇입니까?

답변

1

ItemsControl에 포커스가 없습니까? 집중 조명을 그리는 경우에는 반드시해야합니다. 시각적 트리의 상위 컨트롤에 초점이 맞춰 졌기 때문에 자녀 중 하나도 집중하지 않는다는 의미는 아닙니다. 이유를 이해하려면 WPF에서 "논리적 포커스"와 "키보드 포커스"의 차이점을 배웠는지 확인하십시오. MSDN에는 exaustive explanation이 있습니다.

0

이것은 의도적으로 설계된 것입니다. 내 이해는 포커스가 부모 컨트롤에서 상속되고 비주얼 트리 아래로 나아갑니다. itemscontrol 상위의 비주얼 스타일을 검사 한 다음 itemscontrol 자체를 검사하여 xaml의 시각적 트리로 진행중인 작업을 확인하십시오. 그것은 무슨 일이 일어나고 있는지에 대한 단서를 보여 주어야합니다. 또한 포커스 및 itemscontrol 등에 대한 정보를 찾기 위해 Google 및 일부 다른 사이트를 검색해 볼 수 있습니다. 어떻게 설명 할 수있는 것보다 더 명확한 모든 작동 방식에 대한 자세한 정보가있는 다른 정보가있을 수 있습니다. itemscontrol을 클릭하고 다른 곳을 클릭 한 다음 부모를 클릭하면 어떻게됩니까? 초점이 바뀌 었습니까? 포커스를 오버라이드하는 커스텀 클래스를 만들어서 컨트롤이 포커스를 똑같이 보여주지 않도록 할 수도 있습니다. 해야한다 (공정하게) 쉬워야한다. 특정 사이트/블로그에 대한 정보가있을 수 있습니다.

관련 문제