July 13, 2022
01.교육흐름내용
01.1 Grid
01.2 레이아웃
01.3 DockPanel.Docks
01.4 wrap패널
01.5 canvas
01.6 uniform grid
01.7 추가적인 스터디
02.내용 정리
02.1 Element 크기 설정
02.2 HorizontalAlignment 및 VerticalAlignment
02.3 Visibility
02.4 Padding 및 Margin
02.5 Panel
StackPanel
WrapPanel
예제
DockPanel
Grid
Canvas
UniformGrid
03.추가적인 내용 정리
<Grid>
<RowDefinition> </RowDefinition>
</Grid>
그리드 특징 여러개를 쌓을 수 있음
<StackPanel Grid.Column ="0" Orientaion="Horizontal">
<Button>1</Button>
</StackPanel>
스택패널 부분에 나머지 채우고 싶은 경우
왼쪽에서 오른쪽 으로 정렬
그리드 속성과 비슷
canvas는
위치에 제한이 없음
추가시 같은 크기로 들어감
왜 숫자 넣는걸 지향하는지?
레이아웃에 대한 컨트롤이 더 있지 않을까?
stack panel, wrap, dock, uniform, grid… 다른것 없는지 확인 해보기
xml 레이아웃 타입
xaml
Width, Height
MinWidth, MaxWidth, MinHeight, Minwidth
<StackPanel>
<Button MinWidth="125" MaxWidth="200">Long Button String</Button>
<Image Width="150" Source="coffe.jpg" Height="100" ></Image>
<Button>Long Button String</Button>
</StackPanel>
<StackPanel>
<Button HorizontalAlignment="Left">Left</Button>
<Button HorizontalAlignment="Center">Center</Button>
<Button HorizontalAlignment="Right">Right</Button>
<Button HorizontalAlignment="Stretch">Stretch</Button>
</StackPanel>
<StackPanel Orientation ="Horizontal">
<Button VerticalAlignment="Top">Left</Button>
<Button VerticalAlignment="Center">Center</Button>
<Button VerticalAlignment="Bottom">Right</Button>
<Button VerticalAlignment="Stretch">Stretch</Button>
</StackPanel>
<StackPanel Orientation ="Horizontal">
<Button VerticalAlignment="Top">Left</Button>
<Button VerticalAlignment="Center">Center</Button>
<Button VerticalAlignment="Bottom">Right</Button>
<Button VerticalAlignment="Stretch" Background="AliceBlue">
<Button Margin="15">
Stretch?
</Button>
</Button>
</StackPanel>
<StackPanel Orientation ="Horizontal">
<Button VerticalAlignment="Top">Left</Button>
<Button Visibility="Hidden" VerticalAlignment="Center">Center</Button>
<Button Visibility="Collapsed" VerticalAlignment="Bottom">Right</Button>
<Button VerticalAlignment="Stretch" Background="AliceBlue">
<Button Margin="15">
Stretch?
</Button>
</Button>
</StackPanel>
Visibility="Hidden"
Visibility="Collapsed"
Padding
Margin
한번에 상하좌우 한번에 적용하는 것
<StackPanel Orientation ="Vertical">
<Button Padding="10" Margin="10">Button1</Button>
<Button Padding="10" Margin="10">Button2</Button>
</StackPanel>
개별 적으로 적용하는 것
두번째 값: 위쪽 ,아래쪽
<StackPanel Orientation ="Vertical">
<Button Padding="10, 20" Margin="10, 20">Button1</Button>
<Button Padding="10, 20" Margin="10, 20">Button2</Button>
</StackPanel>
순서대로 왼쪽, 위쪽, 오른쪽, 아래쪽
<StackPanel Orientation ="Vertical">
<Button Padding="10, 20, 30, 40" Margin="10, 20, 30, 40" >Button1</Button>
<Button Padding="10, 20, 30, 40" Margin="10, 20, 30, 40" >Button2</Button>
</StackPanel>
Top to Botton (Default)
<StackPanel>
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
</StackPanel>
Left to Right
<StackPanel Orientation="Horizontal">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
</StackPanel>
Right to Left
<StackPanel Orientation="Horizontal"
FlowDirection="RightToLeft">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
</StackPanel>
요소들을 놓으면서 패널의 가장자리에 도달하면 다른 라인에 쌓임
<WrapPanel Orientation="Horizontal"
FlowDirection="LeftToRight">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
<Button>Btn 4</Button>
<Button>Btn 5</Button>
</WrapPanel>
<WrapPanel Orientation="Horizontal"
FlowDirection="RightToLeft">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
<Button>Btn 4</Button>
<Button>Btn 5</Button>
</WrapPanel>
<WrapPanel Orientation="Vertical"
FlowDirection="LeftToRight">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
<Button>Btn 4</Button>
<Button>Btn 5</Button>
</WrapPanel>
<WrapPanel Orientation="Vertical"
FlowDirection="RightToLeft">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
<Button>Btn 4</Button>
<Button>Btn 5</Button>
</WrapPanel>
ItemHeight
ItemWidth
<WrapPanel ItemHeight="90">
<Button>Btn 1</Button>
<Button VerticalAlignment="Top">Btn 2</Button>
<Button VerticalAlignment="Center">Btn 3</Button>
<Button VerticalAlignment="Bottom">Btn 4</Button>
<Button VerticalAlignment="Stretch">Btn 5</Button>
</WrapPanel>
자식요소 위치를 자식의 순서에 따라 여유공간에 화면에 배치
<DockPanel LastChildFill="False">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
<Button>Btn 4</Button>
<Button>Btn 5</Button>
</DockPanel>
<DockPanel LastChildFill="True">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
<Button>Btn 4</Button>
<Button>Btn 5</Button>
</DockPanel>
행과 열로 정의된 셀로 구성된 container
grid line은 기본값은 보이지 않음
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0">Button [0,0]</Button>
<Button Grid.Row="1" Grid.Column="1">Button [1,1]</Button>
<Button Grid.Row="2" Grid.Column="2">Button [2,2]</Button>
</Grid>
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">Button [0,0]</Button>
<Button Grid.Row="1" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2">Button [0,1]</Button>
<Button Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2">Button [2,2]</Button>
</Grid>
행 과 열의 size 설정
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0">Button [0,0]</Button>
<Button Grid.Row="1" Grid.Column="1">Button [1,1]</Button>
<Button Grid.Row="2" Grid.Column="2">Button [2,2]</Button>
</Grid>
Automatic Sizing
Auto의 경우 content를 다 포함 할 수 있게 크기 할당
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0">Button [0,0]</Button>
<Button Grid.Row="1" Grid.Column="1">Button [1,1]</Button>
<Button Grid.Row="2" Grid.Column="2">Button [2,2]</Button>
</Grid>
Proportional Sizing
Asterisk(*) 사용
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="3*"></ColumnDefinition>
<ColumnDefinition Width="4*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0">Button [0,0]</Button>
<Button Grid.Row="1" Grid.Column="1">Button [1,1]</Button>
<Button Grid.Row="2" Grid.Column="2">Button [2,2]</Button>
</Grid>
Splitter Bars
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<GridSplitter Grid.Row="0" Grid.Column="1" Width="3" Background="Blue" HorizontalAlignment="Center" VerticalAlignment="Stretch">
</GridSplitter>
<Button Grid.Row="0" Grid.Column="0">Button [0,0]</Button>
<Button Grid.Row="1" Grid.Column="1">Button [1,1]</Button>
<Button Grid.Row="2" Grid.Column="2">Button [2,2]</Button>
</Grid>
좌표계를 사용하여 원하는 위치에 요소 배치
<Canvas>
<Button>Button1</Button>
<Button Canvas.Left="39" Canvas.Top="10">Button2</Button>
<Button Canvas.Left="166" Canvas.Top="93">Button3</Button>
</Canvas>
Z-order on a Canvas
Default는 모든 요소 0
<Canvas>
<Button Canvas.ZIndex="3"> Button1</Button>
<Button Canvas.ZIndex="2" Canvas.Left="39" Canvas.Top="10">Button2</Button>
<Button Canvas.Left="166" Canvas.Top="93">Button3</Button>
</Canvas>
UniformGrid의 모양이나 크기를 변경할지라도 항상 다른 셀들과 크기가 같음
<UniformGrid>
<Button> Button1</Button>
<Button>Button2</Button>
<Button>Button3</Button>
</UniformGrid>
스택 패널 오른쪽에서 왼쪽으로 적용하는것
<StackPanel Orientation="Horizontal"
FlowDirection="RightToLeft">
<Button>Btn 1</Button>
<Button>Btn 2</Button>
<Button>Btn 3</Button>
</StackPanel>
Canvas 사용하는 곳 찾아보기
stack panel, wrap, dock panel, uniform, grid… 다른것 없는지 확인 해보기
비주얼 스튜디오 업그레이드
MAUI를 하기 위해서 만들 예정임
9eb64c05888683ce9269fc374b220f1079d88a1c