중첩 된 트리 구조의 깊이를 찾을 수있는 속성을 만들고 싶습니다. 아래 정적은 재귀에 의해 깊이/레벨을 찾습니다. 하지만이 함수를 정적 메서드 대신 동일한 클래스의 속성으로 만들 수 있습니까?중첩 된 컬렉션의 최대 깊이/레벨 찾기
public static int GetDepth(MenuGroup contextMenuItems)
{
if (contextMenuItems == null || contextMenuItems.Items.Count == 0)
return 0;
var subMenu = contextMenuItems.Items.Select(b => b as MenuGroup);
if (!subMenu.Any())
return 1;
var subLevel = subMenu.Cast<MenuGroup>().Select(GetDepth);
return !subLevel.Any() ? 1 : subLevel.Max() + 1;
}
코드에 일부 추가 정보를 원하시면 : 및 의 MenuItem은 메뉴 그룹에 아이가있는
이
의 MenuItem 자식 요소로 ObservableCollection<MenuBase> Items
와 노드 MenuBase에서 파생 된 메뉴 그룹 자식이없는 떠나 노드입니다.
: 'public int Depth {get {get GetDepth (something);} private set;}'뭔가 그 MenuGroup입니다. 메소드를 비공개 및 비 정적으로 만들고이 메소드에서 'this'를 사용할 수 있습니다. – wudzik