[c# wpf] Property Trigger란? / 사용법 (이번 포스팅은 Style 사용법 포스팅을 읽고 왔다는 전제로 작성된 글입니다.) 위와 같이 마우스 커서가 버튼을 지나갈때 스타일을 적용하려면 어떻게 할까요? 이때 사용하는 것이 trigger입니다. 1. trigger 기본 컨셉 trigger는 독립적으로 쓰이기보다 Style을 보조하는 역할로 보셔야 합니다. 그러한 특징때문에 Style태그 안에 넣어주는 형태로 작성을 하는데요. 1) 먼저 우리가 기본적으로 아는 Style태그를 구성해줍니다. 2) 그 안에 태그를 감싼 후, 태그를 넣어줍니다. 이때 Property 속성과 Value 속성을 함께 넣어주는데요. Property는 어떤 이벤트에 반응 할것인지를 정하는 파트입니다. 우리 예시에는 IsMouseOver을 적어 줬습니다. 이건 해당 부분에 마우스.. c#/wpf 2022. 5. 31. [c# wpf] DataContext란? 왜 쓰는 것일까? (해당포스팅은 데이터바인딩 포스팅을 읽고 왔다라는 전제로 작성되었습니다.) 지금까지는 바인딩을 할때 아래와 같은 방식으로, UI Control인 Source 태그와 Target태그를 서로 연결 해주는 식이었습니다. 그런데 지금부터 우리가 하고 싶은건, UI Control이 아닌 우리가 직접 만든 클래스 객체 정보를 xaml태그에서 출력 되도록 하고 싶습니다. 이때 사용하는 것이 DataContext입니다. 이해를 돕기 위해 예를 들어보겠습니다. 1. DataContext 사용 예제 우리가 만든 Person이라는 클래스가 있습니다. 그리고 멤버변수로 "kevin"이라는 값을 가진 Name 프러퍼티가 지정되어있네요. 여기서 우리가 원하는건 xaml에서 Label 엘리먼트 Content 속성에 해당 Name을.. c#/wpf 2022. 5. 31. [c# wpf] Style 상속 방법(with BasedOn) (해당 포스팅은 Style태그 사용법과 이어지는 포스팅입니다.) //MainWindow.xaml 위와 같은 형태의 UI를 구성해보았습니다. 그런데 보시다시피 FontSize 부분에 공통된 코드가 반복되고 있습니다. 지금이야 코드가 길지 않으니 상관 없지만, 코드가 많아질 수록 이러한 비효율성은 극대화가 됩니다. 그렇다면 어떻게 반복을 줄일 수 있을까요? xaml에서도 c#처럼 상속과 같은 기능을 이용할 수 있습니다. Style(스타일) 상속 사용법 먼저 공통되는 부분을 스타일태그로 만들어줍니다. 그리고 x:Key명도 추가해주고요!(여기선 "폰트스타일") 그리고 이전 코드에서 중복되는 부분을 지워줍니다. 다음으로 상속 받을 곳에 각각 BasedOn 이라는 속성값에 {StaticResource Key명} 형.. c#/wpf 2022. 5. 31. [c# wpf] Style 태그 사용 방법 이전 StaticResources 포스팅에서 폰트 컬러를 바꿔 봤는데요. 형태는 비슷하지만 이번에는 태그를 이용한 방법에 대해 알아보겠습니다. 기존 방식과 다르게 다양한 속성을 손쉽게 사용할 수 있다는 점에서 아주 강력하니 꼭 숙지하시면 좋겠습니다. 이번 포스팅에서는 아래와 같이 버튼에 빨간색 배경을 칠하는 것이 목표입니다. 1. 기본 사용방법 1) .Resources안에 Style 태그 추가 2) 어느 곳에 스타일을 적용할지 TargetType 속성을 이용하여 정하기 우리는 Button 부분에 스타일을 적용하고 싶으니까 Button 이라고 적어줍니다. 3) 어떤 속성을 변경할지 정하기 우리는 Background 컬러를 변경하고 싶습니다. 태그를 작성하고 Property에 Background, Value.. c#/wpf 2022. 5. 31. [c# wpf] 데이터바인딩에서 mode 사용법 이전 포스팅에서 데이터바인딩이란 기본적으로 Source에서 특정값을 입력하고, 그 값이 Target으로 출력된다라는걸 배웠습니다. 하지만, 꼭 그렇지는 않습니다. 이게 무슨 말이냐구요? 1) Mode의 기본 개념 아래와 같이 간단한 바인딩을 이용한 ui를 만들어 보았습니다. 당연히 txt2가 Target을 의미하니까 아래와 같이 Source에 값을 입력하고 Target에 나오는 모습이 너무나도 자연스럽죠. 하지만 아래와 같이 Target에서 Source로의 방향도 가능합니다. 이게 어떻게 가능할까요? 우리가 명시적으로 적진 않았지만 Mode 속성으로 TowWay 즉 양방향이 디폴트값으로 설정되어있기 때문입니다. ToWay라는 단어에서 느낄 수 있듯이 Source => Target, Target=> Sou.. c#/wpf 2022. 5. 30. [c# wpf] StaticResource란? (DynamicResource 비교) wpf 공부를 하면서 아래와 같은 StaticResource 라고 적힌것을 보신적이 있으실텐데요. 이 친구의 정체가 무엇인지 알아보도록 하겠습니다. 1. StaticResource 란? 1) background color 변경(기본) 위와 같은 버튼이 있습니다. 우리는 이 버튼의 컬러를 Red로 바꾸고 싶은데요. 어떻게 할까요? Background 속성에 Red컬러를 넣어주면됩니다. 우리가 아는 아주 기본적인 방법인데요. 이외에도 다른 방법이 있다는걸 아시나요? 2) background color 변경(with StaticResource) (1) 먼저 기존에 작성했던 Background 컬러 부분을 지워줍니다. (2) 태그를 만듭니다. 그리고 그 안에 SolidColorBrush 엘리먼트와 속성인 Col.. c#/wpf 2022. 5. 30. [c# wpf] 데이터 바인딩 기초 개념/ 예제 완벽 정리 이번 포스팅에서는 텍스트박스에 텍스트를 입력하면 바로 밑에 해당 내용이 그대로 작성되도록 하고 싶습니다. 이때 바인딩을 사용해볼거에요. 바인딩이라는 단어 뜻에서 유추할 수 있듯이 바인딩은 서로 묶는 기능을 제공합니다. 우리 예시에서는 입력부분인 TextBox와 출력부분인 Label을 함께 묶어, 한쪽에서 변경이 일어나면 그대로 다른 곳에서도 일어나는 효과를 만들어 주었습니다. 1. Target은 뭐고? Source는 뭐야? 우선 바인딩을 이해하기 위해선 목적지를 나타내는 Target과 출발지를 나타내는 Source , 이 두 가지의 개념에 대해서 항상 염두해 두셔야 합니다. 우리 예에서는 출발지를 의미하는 Source는 무엇이고 도착지인 Target은 무엇일까요? 당연히 입력을 하는 부분이 Source .. c#/wpf 2022. 5. 27. [c#] 오버라이드 ToString은 뭐지? (커스텀) c# 을 공부하다보면, 클래스에 아래와 같이 override가 붙은 ToString()본적이 있을텐데요. 이 친구 정체를 알아보도록 하겠습니다. 1. 디폴트 ToString메서드 아래와 같이 간단한 Person 클래스를 만들어보았습니다. 그리고 클래스로 생성한 객체를 그대로 출력해보겠습니다. 어떤 값이 나올까요? output: 클래스의 이름이 그대로 출력이 됩니다. 해당 값의 타입은 string타입입니다. 자 여기서 우리가 깨달아야할건 이겁니다. 분명 "객체 자체를 출력"했는데, "string형태의 특정값이 출력"된다라는건 내부적으로 해당 클래스명을 string형태로 출력하라는 메서드가 숨어 있다는 겁니다. 정말 그런지 확인해보겠습니다. 2. 커스텀 ToString 메서드 기존 클래스 ToString().. c# 2022. 5. 26. [c#] array vs array list (둘의 차이점과 사용시기) c#을 처음 공부하면서 둘이 혼용되어 사용된걸 본적은 있는데, 정확한 차이점을 모르다보니 언제 써야 하는지 모르셨던분들은 이번 포스팅을 통해 둘의 차이에 대해 알아보도록 하겠습니다. 1. Array의 약점? (배열 선언, 생성이 낯선 분들은 해당 포스팅 참조) (1) 크기 고정 아래와 같이 배열을 정의 해보겠습니다. 그리고 해당 배열에 값을 하나씩 채워넣어 볼건데요. 런타임 에러가 발생합니다. 왜냐하면 Array를 생성시 크기를 정해야만 하는데, 우리가 만든 Array는 2개까지밖에 넣을 수 없습니다. 그런데 3개를 넣으려고 하니 발생하는 에러인거죠. (2) 타입(type) 고정 이번에는 "hello"라는 값을 넣고 싶습니다. 그런데 컴파일 에러가 발생하네요. 왜냐하면 우리가 기존 배열 생성시, int타.. c# 2022. 5. 26. [c#] 2023년 모르면 뒤쳐지는 visual studio 단축키 이번 포스팅에서는 visual studio에서 사용되는 유용한 단축키들에 대해 알아보도록 하겠습니다. 1. 들여쓰기, 정렬하기 1) ctrl + k + d (전체코드 정렬) 아무 곳에 커서를 놓고 해당 단축키를 누르면 전체 코드가 정렬됩니다. 2) ctrl + k + f (선택 영역 정렬) 선택 영역만 정렬을 해주는 단축키입니다.(블록을 지정해서 사용하시면 됩니다.) 2. 주석 처리 1) 주석 : ctrl + k + c 2) 주석 해제 : ctrl + k + u 3. 클래스 만들기 cla + tab 2번 cla 까지 적어주시고 tab을 2번 누르면 기본 클래스 뼈대가 생성됩니다. 4. Main 함수 만들기 svm + tab 2번 svm 까지 적어주시고 tab을 2번 누르면 main함수가 생성이 됩니다. .. c# 2022. 5. 25. [c# wpf] 마우스 이벤트(더블클릭, 오른쪽클릭, 왼쪽 클릭) 하는법 이번 포스팅에서는 윈도우 창에 마우스 이벤트(더블클릭 or 오른쪽 클릭 or 왼쪽 클릭)를 날렸을때, 해당 이벤트가 무엇인지 메세지창으로 알려주는 법에 대해 알아보도록 하겠습니다. 1. 여러가지 이벤트 1) 마우스 더블 클릭(Double click) //MainWindow.xaml 이곳은 그냥 빈화면으로 두겠습니다. /MainWindow.xaml.cs(코드 비하인드) 여기서 우리가 집중해야할 부분은 더블클릭을 했을 경우 어떤 이벤트를 발생시킬지 결정하는 것입니다. 우리가 앞서 목표한바는 메세지창에 해당 내용이 뜨게하는것이었죠? 그렇기 때문에 MainWindow_MousedoubleClick함수에 관련 코드를 적어줍니다. 추가적으로 MouseDoubleClick 이벤트에 우리가 만든 함수를 연결시켜주는 작.. c# 2022. 5. 25. [c# wpf] 새로운 창(윈도우) 여는 법 이번 포스팅에는 버튼을 클릭하면 새로운 창이 뜨는 UI를 만들어 보도록 하겠습니다. (해당 포스팅은 이전 포스팅과 이어지는 부분으로 먼저 읽고 오시면 이해에 도움이 됩니다.) 1. 창(윈도우) 추가 2. Code-behind 단에 이벤트 추가 //MainWindow.xaml.cs 새로 생성한 xaml파일 이름으로 클래스를 객체화 선언을 합니다. 여기선 Widow1()로 생성을 하였고, 해당객체를 Window 타입의 변수 w1에 할당을 하였습니다. 추가적으로 해당 객체의 메서드인 Show();를 통해 윈도우 창을 새로 띄우는 명령어를 추가합니다. cf) ShowDialog랑 차이는? ShowDialog는 새창을 띄우는 건 같지만 기존 창을 freeze시킵니다. 즉 기존창에서는 작업이 불가하게 합니다. c#/wpf 2022. 5. 24. 이전 1 ··· 18 19 20 21 22 23 24 ··· 32 다음