//< 함수 >
public static IEnumerable<T> FindLogicalChildren<T>(DependencyObject obj) where T : DependencyObject{if (obj != null){if (obj is T)yield return obj as T;foreach (DependencyObject child in LogicalTreeHelper.GetChildren(obj).OfType<DependencyObject>())foreach (T c in FindLogicalChildren<T>(child))yield return c;}}//< 호출 부분 >foreach (var a in FindLogicalChildren<ContentControl>(this)){if (dic.ContainsKey(a.Name)){if (a is GroupBox){GroupBox grb = (GroupBox)a;grb.Header = dic[a.Name];}else if (a is TabItem){TabItem cvs = (TabItem)a;cvs.Header = dic[a.Name];}else if (a.Content is String){a.Content = dic[a.Name];}}}자식 컨트롤을 재귀적으로 탐색하여 리턴하여주는 함수를 통하여 모든 버튼을 반환한다.그러나 Canvas와 TabItem의 Text는 Content가 아닌 Header를 쓰기 때문에 따로 검사를 해주어야 한다.이 방식을 이용하여 이미 개발되어 있는 프로젝트의 각 컨트롤 추출 및 입력으로 다국어 지원을 쉽게 해결 할 수있었다.
'프로그래밍 > C#' 카테고리의 다른 글
델리게이트(delegate)와 이벤트(event) (0) | 2019.03.21 |
---|---|
WPF DLL 생성 및 Mainwindow에서 ChildWindow로 창 전환 (0) | 2019.02.26 |
WPF 속성 창이 화면에 나타나지 않을 때 (0) | 2019.02.25 |
오래된 파일을 지우는 함수 작성 (0) | 2019.02.05 |
섀도잉과 하이딩 (0) | 2019.01.14 |