C# - WPF

Alpha, Orderly·2023년 7월 13일
0

CSharp

목록 보기
9/11

프로젝트 구조

  • xaml 파일 : UI가 적혀있다.

Element

  • TextBox : 글 입력용 박스
  • ScrollViewer : 스크롤 창
  • StackPanel : 여러개의 Element를 Children으로 가질수 있다.
  • TextBlock : 문자열을 담는 공간

Property

  • Margin : Thickness 로 지정
  • Color : SolidColorBrush 로 지정
  • ColorConverter.ConvertFromString : #000000 과 같이 색상 지정, Color로 캐스팅 필요

Xaml 로 UI 작성하기

  • Xaml은 마크업 언어로 UI에 대한 정보를 담고 있다.
  • 좌측의 도구상자를 이용 GUI 환경에서 UI를 구성할수 있다.

Grid

<Grid.ColumnDefinition> </Grid.ColumnDefinition>

  • Grid의 열을 정의한다.
  • 내부에 ColumnDefinition 태그를 사용해 열의 추가가 가능하다.

<Grid.RowDefinition> </Grid.RowDefinition>

  • Grid의 행을 결정한다.
  • 내부에 RowDefinition 태그를 사용해 행의 추가가 가능하다.

사용법

  • Grid 내부에 태그를 하나 두고 거기에 Grid.Row 와 Grid.Column 값을 통해 값이 들어갈 Grid를 정한다.
<Label Grid.Row="1" Grid.Column="1" Content="Hello World" />
// 2행 2열에 Hello world 가 들어간다 ( Grid의 행/열은 0부터 시작 )

크기 정하기

  • Definition에 Width/Height에 픽셀 수 대신 auto를 적으면 자동으로 사이즈를 정해준다.
  • *를 적으면 남은 공간을 전부 사용하게 된다.
    • 3와 같이 적을시 여러개의 중에서 공간을 더 차지하게 설정할수 있다.

ColumnSpan / RowSpan

  • 컨텐츠가 n개의 컬럼을 차지할수 있도록 하는것.
  • Row/Col 위치를 정하고 ColumnSpan 을 추가한다.
<Label Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Content="Example" />
// 2행 2열부터 시작하여 2칸의 열을 차지하는 Label

cs 파일에 요소 만들기

  • 예시 : 버튼 만들기
Button b = new Button(); // 버튼
b.Content = "B"; // 내부 글자 정하기
Grid.SetRow(b, 2); 
Grid.SetColumn(b, 2);
// 그리드 내부에서의 위치 정하기
Grid myGrid = (Grid)FindName("myGrid")
// 그리드 찾아오기 < Grid에 Name속성 추가 필요함! >
myGrid.Children.Add(b);
// 찾아온 그리드에 요소를 추가함.
  • 요소에 x:Name을 붙혔다면, 사실 FindName으로 쓸 필요 없이 바로 코드에서 Name으로 호출할수 있다.

버튼 이벤트 핸들러

클릭 이벤트

  • 이벤트에 메소드 이름을 적는다.
<Button Click="Button_Click" />
  • cs 파일에 생긴 메소드에 동작을 추가한다.
    • EX. MessageBox.Show("Hello World");
    • Hello World가 적힌 창을 하나 띄운다.

요소에 프로퍼티 바로 지정하는 방법

TextBlock example = new TextBlock();
example.Text = "Example"
// 과 같이 지정할수도 있고
TextBlock example = new TextBlock {
	Text = "Example",
}
// 과 같이 중괄호를 사용해 프로퍼티를 즉각적으로 적용해줄수도 있다.
// 위 중괄호를 사용할시 다음 프로퍼티 입력을 위해선 세미콜론이 아닌 , 을 사용해야 한다!

요소에 마진/패딩 주는법

TextBox.Margin = new Thickness(10);
// Thickness 를 사용해 지정한다.

ContentControl : 화면에 표시될것들을 지정하기

  • 특정 상황마다 화면에 표시되야 할 것이 다를 경우 사용한다.
  • Content 프로퍼티를 가져, 이를 통해 표기할 것을 설정할수 있다.

UserControl

  • 화면의 일부분을 채우기 위해 사용한다.
  • 일종의 컴포넌트이며, ContentControl의 Content로 사용되기도 한다.
  • xaml 파일 형식

현재 자신이 위치한 윈도우를 가져오는 방법

Window window = Window.GetWindow(this);
  • 위의 Content를 수정할수 있다.

데이터 바인딩

  • window에서 this.DataContext를 특정 클래스로 지정한다.
public par
profile
만능 컴덕후 겸 번지 팬

0개의 댓글