문제

시각적 요소의 태그 속성에 바인딩 된 ID가있는 요소를 찾는 시각적 UI 트리를 가로 질러 가고 싶습니다.

내가 어떻게 이렇게하는지 궁금합니다. 컨트롤에는 자녀가 없습니다.

나는 TreeView Control을 때릴 때까지 의도 한대로 작동하는 것처럼 LogicalTreeHelper.getChildren을 사용하기 시작했습니다. 그러면 LogicalTreeHelper.getChildren은 아이들을 돌려주지 않습니다.

참고 : 목적은 데이터 항목에 해당하는 시각적 UI 요소를 찾는 것입니다. 즉, 항목의 ID가 주어지면 UI 요소가 표시되는 것을 찾으십시오.

편집 : 나는 이것을 충분히 설명하지 않는 것 같습니다. 일부 데이터 객체를 TreeView 컨트롤에 바인딩 한 다음 해당 비즈니스 객체의 ID를 감안할 때 특정 항목을 선택하려고합니다. 데이터 객체의 ID가 적절한 시각적 요소의 태그 속성에 있기 때문에 시각적 트리를 통과하고 원하는 요소를 찾는 것이 왜 그렇게 어려운지 모르겠습니다. 두더지를 사용하고 있으며 태그에 적절한 ID가있는 UI 요소를 찾을 수 있습니다. 코드에서 시각적 요소를 찾을 수 없습니다. LogicalTreeHelper는 트리의 어떤 항목도 지나치지 않습니다. Itemcontainergenerator.containerfromitem은 트리 뷰에서 항목에 대한 항목에 대한 내용도 검색되지 않습니다.

올바른 솔루션이 없습니다

다른 팁

이것을보세요 견본. 이 샘플이 매우 잘 작성된 것을 발견했으며 뷰 모델을 사용하면 문제가 해결 될 것이라고 생각합니다.

편집하다: 그리고 시각적 트리의 검색과 관련하여. TreeView와 TreeViewItem에는 ID를 가로 지르고 검색 할 수있는 항목 속성이 있습니다. 당신은 그것을 사용할 수 없습니까?

문제는 TreeViewItems 눈에 띄는 것은 만들어졌습니다.

더 나은 접근 방식은 트리 데이터의 구조를 모방하는 데이터 구조를 만들고 데이터 바인딩을 사용하여 TreeView 해당 데이터를 표시하는 방법. 원한다면 간단한 예제를 쓸 수 있습니다.

편집 : 편집을 기반으로 해당 객체에 대해 UI 항목이 생성 된 경우에만 작동합니다. 살펴보십시오 iitemcontainergenerator 인터페이스 (호출에 의해 검색됨 항목 control.itemcontainergenerator. UI 컨테이너를 반환 할 방법이 있다고 생각합니다 (즉 TreeViewItem) 주어진 데이터 객체의 경우. UI 컨테이너가 이전에 생성 된 경우에만 작동합니다.

logicaltreehelper.getChildren은 컨트롤의 논리적 자산 속성을 살펴 봅니다. GetChildren이 반환 한 물체의 유형을 검사해야 할 수도 있고 TreeView 객체에 올 때 특별한 처리 로직을 수행해야 할 수도 있습니다.

그 특별한 논리는 아마도 나무의 항목을 반복하여 프레임 워크 레미션 (태그 속성을 정의하는 기본 클래스)으로 캐스팅하려고 시도 할 것입니다.

VisualTreeHelper를 사용하여 시각적 트리를 통해 비슷한 일을했습니다. 체크 아웃 이 블로그 게시물 Jim Baltzell-Gauthier가 작성한-시각적 트리를 걷고 이름과 유형별로 요소를 반환하는 몇 가지 도우미 방법을 제공합니다. 이것은 현재 프로젝트에서 사용하는 코드와 유사합니다. 이름 대신 또는 이름 대신 태그 값을 확인하도록 이러한 함수를 수정할 수 있습니다.

시각적 트리와 함께 알아야 할 한 가지는 시각적이로드되지 않은 한 존재하지 않는다는 것입니다. 시각이 아직 렌더링되지 않은 경우 시각적 요소의 "로드 된"이벤트에 대의원을 첨부해야 할 수도 있습니다. 코드를 호출하는 요점.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top