WPF 사용자 정의 컨트롤을 동적으로 추가하는 방법
😢상황
- WPF에서 사용자 정의 컨트롤(UserControl)을 만들었고,
이를 XAML에 정적으로 추가하는 대신 코드에서 동적으로 생성해서 UI에 붙이고 싶음 - 예: 버튼 클릭 시 사용자 정의 컨트롤을
StackPanel
에 추가하고 싶음
🛠️해결법
1. 사용자 정의 컨트롤 생성
MyCustomControl myControl = new MyCustomControl();
💡
MyCustomControl
은UserControl
을 상속한 클래스여야 함
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 구성이 가능함