본문 바로가기
programming/UWP

uwp Button 동적으로 추가하는 방법

by 개코 - 개발과 코딩 2021. 4. 17.

uwp에서 Button 동적으로 추가하는 방법은 간단하다. 흡사 C#과 방법은 같다. 버튼 생성자를 만들어 속성을 추가한 후 부모 컨트롤에 추가해주면 된다. 다른 컨트롤들을 동적으로 추가하는 것은 같은 방법을 사용한다. 이것은 프로그램을 하다보면 자주 사용하는 것이기도 하다.

 

uwp Button

모든 프로그램들이 그렇듯 버튼 Button 은 프로그램에 어떠한 명령을 지시할 때 사용한다.

프로그램에서 동작을 실행하는 것을 이벤트 Event 라고 한다.

그렇기에 모든 실행가능한 컨트롤에는 이벤트 핸들러나는 것이 추가되어 사용자가 원하는대로 프로그램을 동작시킬 수 있다.

 

Button을 동적으로 추가하기

uwp 에서 Button 컨트롤을 동적으로 추가하는 것은 간단하다.

C# 과 방법이 같기 때문에 그리 어렵지 않다.

 

  1. Button 컨트롤 객체를 생성한다.
  2. 속성을 추가한다.
  3. 이벤트 핸들러를 추가한다.

아래의 코드를 보자.

xaml 에 적용한 StackPanel 에 Button 컨트롤을 동작으로 추가해 본다.

여기서 StackPanel 은 부모 컨트롤이고 동적으로 추가되는 Butotn 컨트를은 자식컨드롤이다.

부모컨트롤에 자식컨트롤을 추가하기 위해서는 부모컨트롤에 name 속성이 필요하다.

<!-- XAML -->
<StackPanel x:Name="sptb">
</StackPanel>
private void AddButton()
{
	Button oButton = new Button();
	oButton.Content = "동적버튼 1";
	oButton.Click += OButton_Click;

	this.sptb.Children.Add(oButton);
}

위의 코드를 보면 하나의 버튼 컨트롤을 동적으로 생성하여 StackPanel 에 추가하고 있다.

StackPanel 은 부모 컨트롤이고, 동적 생성된 Button 컨트롤은 자식 컨트롤이다.

 

Button 여러개를 동적으로 추가하기

하나를 추가했다면 여러개 추가하는 것은 더욱 간단하다.

여러개의 Button 컨트롤을 생성해주고 부모컨트롤인 StackPanel 에 전부 추가해 주면 된다.

아래의 코드를 보자.

private void AddButton()
{
	Button oButton1 = new Button();
	oButton1.Content = "동적버튼 1";
	oButton1.Click += OButton_Click;

	Button oButton2 = new Button();
	oButton2.Content = "동적버튼 2";
	oButton2.Click += OButton_Click;

	Button oButton3 = new Button();
	oButton3.Content = "동적버튼 3";
	oButton3.Click += OButton_Click;

	this.sptb.Children.Add(oButton1);
	this.sptb.Children.Add(oButton2);
	this.sptb.Children.Add(oButton3);
}

응용을 해보자.

위의 방법대로 버튼을 6개 추가해 보도록 한다.

부모컨트롤인 StackPanel 를 2개 만든다.

동적으로 버튼을 만들되 3개는 가로배열, 다른 3개는 세로로 배열한다.

StackPanel 의 속성은 이전글을 참고한다.

 

>>> uwp 화면 레이아웃 StackPanel 사용하기 <<<

<!-- xaml -->
<StackPanel x:Name="sptb">
</StackPanel>
private void AddButton()
{
	Button oButton1 = new Button();
	oButton1.Content = "동적버튼 1";
	oButton1.Click += OButton_Click;

	Button oButton2 = new Button();
	oButton2.Content = "동적버튼 2";
	oButton2.Click += OButton_Click;

	Button oButton3 = new Button();
	oButton3.Content = "동적버튼 3";
	oButton3.Click += OButton_Click;

	Button oButton4 = new Button();
	oButton4.Content = "동적버튼 4";
	oButton4.Click += OButton_Click;

	Button oButton5 = new Button();
	oButton5.Content = "동적버튼 5";
	oButton5.Click += OButton_Click;

	Button oButton6 = new Button();
	oButton6.Content = "동적버튼 6";
	oButton6.Click += OButton_Click;

	StackPanel oStackPanel1 = new StackPanel();
	oStackPanel1.Orientation = Orientation.Horizontal;

	oStackPanel1.Children.Add(oButton1);
	oStackPanel1.Children.Add(oButton2);
	oStackPanel1.Children.Add(oButton3);

	StackPanel oStackPanel2 = new StackPanel();
	oStackPanel2.Orientation = Orientation.Vertical;

	oStackPanel2.Children.Add(oButton4);
	oStackPanel2.Children.Add(oButton5);
	oStackPanel2.Children.Add(oButton6);

	this.sptb.Children.Add(oStackPanel1);
	this.sptb.Children.Add(oStackPanel2);
}

코드가 상당히 길지만 공통적인 부분은 같다.

컨트롤 객체를 생성하고 속성을 지정한 후 부모컨트롤에 넣어주면 된다.

반응형

댓글