TreeViewItem이 텍스트 상자와 같은 입력 컨트롤 인 경우 TreeView의 SelectedItemChanged 이벤트 및 SelectedItem 속성이 발생하지 않습니다. 아래 예제 코드는 TreeView SelectedItemChanged 이벤트에 중단 점을 배치하여 문제를 보여줍니다. 이 중단 점은 "문자열 머리글"은 선택되지만 "텍스트 상자 머리글"은 선택되지 않으면 실행됩니다.TreeView 하위 항목이있는 TreeView SelectedItem 동작
필자는 Textbox 또는 RichTextbox (내 실제 응용 프로그램)가 중요한 버블 링 이벤트를 먹고 있다고 가정합니다. TextBox에 대해 TreeView SelectedItem이 Label과 같은 컨트롤처럼 동작하도록하려면 어떻게해야합니까?
참고 :이 문제를 해결할 수 있다면 MVVM 및 MEF를 사용함에 따라 SelectedItem에 양방향 바인딩이 필요합니다. SelectedItem은 문제가되는 읽기 전용이며, (http://silverscratch.blogspot.com/2010/11/two-way-binding-on-treeviewselecteditem.html)로 해결하려고합니다. 나는이 관련 링크가 누군가를 도울 수 있다고 생각했다.
XAML :
<TreeView SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeViewItem>
<TreeViewItem.Header>
<TextBox>
Textbox Header
</TextBox>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
String Header
</TreeViewItem.Header>
</TreeViewItem>
</TreeView>
코드 뒤에 : 당신은 당신의 TreeView
에 GotFocus
이벤트를 캐치 할 필요
나는 두려워서 내 문제를 단순화했습니다. 내 TreeView의 텍스트 상자 TreeViewItems는 MEF를 통해 제 3 자 어셈블리에서 가져온 것입니다. 긴 이야기를 짧게 나는 TreeView에서 이벤트를 처리해야합니다. 그러나 TreeView 수준에서이 버블 링 GotFocus 이벤트를 처리 할 수 /해야한다고 생각합니까? – aidesigner
GotFocus = "UIElement_OnGotFocus"를 TreeView로 옮기더라도 작동합니다. 그러나이 체크를 핸들러에 추가하는 것을 잊지 마십시오 : item! = null (답변을 업데이트했습니다) – asktomsk
굉장했습니다! 제가 할 수있는 한 질문을 마감해야합니다. 1) 이해를 돕기 위해 SelectedItemChanged가 TextBox가 아닌 Label과 같은 TreeViewItems 컨텐츠에 대해 자동으로 작동하는 이유를 알고 있습니까? 버블 링 이벤트가 없습니다. 2) 연결된 GetParentObject 메서드에서 최후의 수단은 VisualTreeHelper를 사용하는 것입니다. 부모를 찾기 위해 VisualTreeHelper를 사용하는 것만으로는 충분하지 않은 이유는 무엇입니까? – aidesigner