프로그래밍 기술/WPF

[WPF] 5. 레이아웃과 Panel - 5.3 StackPanel, 5.3.2 cs 소스에서 코드로 배치하기

언제나휴일 2016. 5. 25. 10:56
반응형

5.3 StackPanel, 5.3.2 cs 소스 에서 코드로 배치하기


5.3.2 cs에서 소스를 이용하여 배치하기

 이번에는 cs 파일에서 직접 소스를 작성하여 배치하는 것에 대해 살펴봅시다. 실습할 배치 모습은 앞에서 xaml 태그를 이용한 것과 같습니다.

StackPanel 사용 예제 실행 화면

[그림 5.11] StackPanel 사용 예제 실행 화면

 

 먼저 WPF 응용 프로그램 프로젝트를 생성하세요.

WPF 응용 프로그램 프로젝트 생성

[그림 5.12] WPF 응용 프로그램 프로젝트 생성

 

 먼저, xaml Window 개체 부분을 제외한 부분을 없애는 것부터 시작합시다.

 

MainWindow.xaml

<Window x:Class="StackPanel_실습___소스_코드로_배치.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:StackPanel_실습___소스_코드로_배치"

        mc:Ignorable="d"

        Title="Ex-StackPanel" Height="150" Width="300"/>

 

 먼저, ScrollViewer 개체를 생성하고 수평 스크롤 바가 필요한 경우에 자동으로 보일 수 있게 설정을 합시다.

 

//<ScrollViewer HorizontalScrollBarVisibility="Auto" >

sv = new ScrollViewer();

sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;

this.Content = sv;

 

 StackPanel을 생성하고 수평으로 배치하도로 Orientation 속성을 설정합니다그리고 ScrollViewer Content속성에 생성한 StackPanel 개체를 설정합시다.

 

//<StackPanel Orientation="Horizontal">

sp = new StackPanel();

sp.Orientation = Orientation.Horizontal;

sv.Content = sp;

 

 자식 UI들은 단순히 StackPanle 개체의 Children 속성의 Add 메서드를 이용하여 추가만 하면 자동으로 순차적으로 배치합니다.

 

//<Button Content="Button 1"/>

Button btn1 = new Button();

btn1.Content = "Button1";

sp.Children.Add(btn1);

 

MainWindow.xaml.cs

using System.Windows;

using System.Windows.Controls;

 

namespace StackPanel_실습___소스_코드로_배치

{

    /// <summary>

    /// MainWindow.xaml에 대한 상호 작용 논리

    /// </summary>

    public partial class MainWindow : Window

    {

        ScrollViewer sv;

        StackPanel sp;

        public MainWindow()

        {

            InitializeComponent();

            LayOut();

        }

 

        private void LayOut()

        {

            //<ScrollViewer HorizontalScrollBarVisibility="Auto" >

            sv = new ScrollViewer();

            sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;

            this.Content = sv;

            //<StackPanel Orientation="Horizontal">

            sp = new StackPanel();

            sp.Orientation = Orientation.Horizontal;

            sv.Content = sp;

            ChildrenAdd();

        }

        private void ChildrenAdd()

        {

            //<Button Content="Button 1"/>

            Button btn1 = new Button();

            btn1.Content = "Button1";

            sp.Children.Add(btn1);

 

            Button btn2 = new Button();

            btn2.Content = "Button2";

            sp.Children.Add(btn2);

            Button btn3 = new Button();

            btn3.Content = "Button3";

            sp.Children.Add(btn3);

            Button btn4 = new Button();

            btn4.Content = "Button4";

            sp.Children.Add(btn4);

            Button btn5 = new Button();

            btn5.Content = "Button5";

            sp.Children.Add(btn5);

            Button btn6 = new Button();

            btn6.Content = "Button6";

            sp.Children.Add(btn6);

        }

    }

}

 


실습 파일

StackPanel 실습 - 소스 코드로 배치.zip


관련 게시글

[WPF] 5. 레이아웃과 Panel

[WPF] 5. 레이아웃과 Panel - 5.1 Grid, 5.1.1 xaml 태그를 이용하여 배치

[WPF] 5. 레이아웃과 Panel - 5.1 Grid, 5.1.2 cs 소스에서 코드로 배치하기

[WPF] 5. 레이아웃과 Panel - 5.2 Canvas, 5.2.1 xaml 태그를 이용하여 배치

[WPF] 5. 레이아웃과 Panel - 5.2 Canvas, 5.1.2 cs 소스에서 코드로 배치하기

[WPF] 5. 레이아웃과 Panel - 5.3 StackPanel, 5.3.1 xaml 태그를 이용하여 배치

[WPF] 5. 레이아웃과 Panel - 5.4 WrapPanel

[WPF] 5. 레이아웃과 Panel - 5.5 DockPanel

반응형