최대 1 분 소요

😢상황

  • WPF에서 사용자 정의 컨트롤(UserControl)을 만들었고,
    이를 XAML에 정적으로 추가하는 대신 코드에서 동적으로 생성해서 UI에 붙이고 싶음
  • 예: 버튼 클릭 시 사용자 정의 컨트롤을 StackPanel에 추가하고 싶음

🛠️해결법

1. 사용자 정의 컨트롤 생성

MyCustomControl myControl = new MyCustomControl();

💡 MyCustomControlUserControl을 상속한 클래스여야 함


2. 부모 컨테이너에 추가

myStackPanel.Children.Add(myControl);

💡 StackPanel, Grid, Canvas 등 다양한 컨테이너에 .Children.Add()로 삽입 가능


3. 속성 동적 설정 (선택)

myControl.Margin = new Thickness(10);
myControl.Width = 200;
myControl.Height = 100;

💡 동적으로 스타일, 이벤트 핸들러, 데이터 바인딩 등을 함께 설정할 수 있음


예시 전체 코드

private void AddControlButton_Click(object sender, RoutedEventArgs e)
{
    var myControl = new MyCustomControl();
    myControl.Margin = new Thickness(10);
    myControl.SomeProperty = "동적으로 설정";

    myStackPanel.Children.Add(myControl);
}

정리: 왜 이게 효과 있었는가?

  • 사용자 정의 컨트롤도 일반 컨트롤처럼 인스턴스를 만들어 컨테이너에 추가 가능
  • 코드로 생성하면 조건에 따른 UI 구성, 반복 생성, 동적 조작에 유리
  • Children.Add()만 잘 활용해도 다양한 UI 구성이 가능함