나는 몇몇 메뉴 아이템을 만들었습니다 (하지 XAML에서) 그래서 난 그들에게 부모 항목 추가 : 논리적 및 시각적 트리에서 MenuItem을 부모 MenuItem에 연결하는 방법은 무엇입니까?
(Parent_Menu as MenuItem).Items.Add(Menu_Item);
그럼 내가 (루프) VisualTree 목록에서 내 스타일을 적용합니다. 그러나 스타일은 새 MenuItem에는 적용되지 않습니다. 다음은 코드를 적용하는 내 스타일입니다.
else if (Visual is MenuItem)
{
MenuItem menuItem = Visual as MenuItem;
menuItem.Style = D_Interface.Style_Menu;
}
상위 메뉴 항목에는 스타일이 있지만 새 하위 메뉴 항목은 없습니다. 그래서 방금 항목이 시각적 트리에 의해 부모 항목에 연결된 디버거로 확인하고 상위 항목에서 새 하위 항목을 찾을 수 없습니다. 논리적 인 나무에서도 부모와 연결되어 있지 않은 것 같습니다.
디버거에서 시각적 트리가 아닌 모든 부모에 연결되어 있고 논리적 트리가 아니라 창과 연결되어 있지 않다는 것을 알았으므로 새로운 하위 항목이 글로벌 시각적 \ 논리 트리에있는 곳을 확인했습니다. 그 자체.
내 결론은 "Items"목록에서만 부모 MenuItem과 관련이 있다는 것입니다. MenuItems는 부모 Menu 컨트롤의 하위 항목과 동일하지 않습니다.
동적으로 생성 된 MenuItem을 시각적 트리에서 부모의 자식으로 만드는 방법을 알고있는 사람이 있습니까?
VisualTree에서 루프의 새 MenuItem을 가져올 수 없습니다. 문제는 새 MenuItem이 부모의 자식으로 발견되지 않는다는 것입니다. 새 MenuItem에 스타일을 적용하지 마십시오. 예를 들어 다른 기존의 menuItem은 VisualTree에서 찾을 수 있으므로 스타일이 적용되고 효과가있었습니다. 다시 문제는 새 MenuItem이 부모의 VisualTree에없는 이유입니다. 어떻게 그들을 삽입하는 방법? Items.Add VisualTree에서 그들을 연결하지 않고 왜 궁금 해서요? – Lispwave
MenuItem의 자손은 상위 메뉴 항목의 Popup 내에 표시되므로 기술적으로 같은 시각적 트리에 있지 않습니다 (다른 HwndSource의 일부 임). 당신이하고있는 일을 말하는 것이 아니라, 요소에 영향을주기 위해 시각적 트리를 걷는 것처럼 들립니다. 그렇다면 논리적 트리를 따라 내려야하거나 비주얼 트리의 팝업을 하위 노드로 이동해도 하위 노드로 이동해야합니다. 그러나 일반적으로 첫 번째 측정 및 템플릿을 적용 할 때까지 만들어지지 않기 때문에 시각적 트리에서 휴식을 찾을 수도 있습니다. – AndrewS
그래서 Menu_Main의 리소스에 스타일을 넣어야합니까? 어쨌든, Logical tree loop로 최소한 Menu (모든 아이템)의 자식을 얻을 수 있습니까? 또는 다른 도우미가 MenuItems를 (해당 .Items 컬렉션에 의해) 열거하도록 만드시겠습니까? – Lispwave