[c# wpf] xaml에서 class 초기값 설정 방법 이전 dataContext 포스팅에서는 코드 비하인드 단에서 클래스를 정의하고 아래와 같이 값을 초기화 했습니다. //MainWindow.xaml.cs 그리고 초기값을 xaml상에서 출력하기 위해 DataContext에 해당 클래스를 할당한 후 바인딩을 통해 출력을 했습니다. //MainWindow.xaml 하지만 우리가 이번 포스팅에서 다룰 것은 코드 비하인드 단이 아닌 xaml상에서 클래스 초기값을 설정하는 방법입니다. 이 글을 읽기 전 선수 지식 포스팅 [c# wpf] DataContext란? 왜 쓰는 것일까? [c# wpf] StaticResource란? (DynamicResource 비교) 1. 먼저 기존에 작성했던 초기 값을 지우겠습니다. 2. 태그를 지워줍니다. 3. 태그를 생성하고 그 안에.. c#/wpf 2022. 6. 20. [c#] Action, Func, Predicate 개념/ 차이 c# 에서는 함수를 그냥 변수에 담으려고하면 에러가 발생합니다. 이를 가능하게 해주는것이 델리게이트(delegate)입니다. (델리게이트를 모르시는 분은 해당 포스팅을 참조바랍니다.) 이 글을 읽기 전 선수 지식 포스팅 델리게이트(delegate) 개념 | += , -= [c#] 델리게이트(대리자) 익명 함수로 선언 간단하게 복습을 해보자면, 아래 그림과 같이 델리게이트를 선언한 후, 이 델리게이트로 선언한 변수에 우리가 담고 싶은 함수를 담습니다. 그리고 최종적으로 아래 빨간 사각형 처럼 2가지 방법으로 해당 함수를 실행 시키면 끝입니다! 그런데 여기서 뭔가 불편한걸 못 느끼셨나요? "아니 무슨 함수를 변수에 할당하는데 델리게이트까지 선언해야하지?" 라는 생각이 드실겁니다. 맞습니다. 이러한 문제를 해.. c# 2022. 6. 16. [c# wpf] ListView 내용 편집,수정 하는법(with IValueConverter) 1. 무엇을 배우나요? 이번 포스팅에서는 위 그림과 같이 ListView(리스트뷰)에서 특정 컬럼의 내용을 원하는 형태로 변경하는 방법에 대해 알아 보도록 하겠습니다. 먼저 설명을 위한 기본 UI 세팅 및 예제 코드에 대해 설명하겠습니다. 이 글을 읽기 전 선수 지식 [c#] 인터페이스란? [c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유 2. 기본 UI 세팅 //MainWindow.xaml.cs 1) 업체 정보를 담을 클래스 생성(CompanyInfo) 2) CompanyInfo 클래스를 담을 리스트 생성 3) 리스트에 CompanyInfo 객체 담기 4) 객체들이 xaml에 출력되도록 .ItemSource에 리스트를 할당 여기서 CompanyListView는 LitView 엘리.. c#/wpf 2022. 6. 10. [c#] CallerMemberName 어트리뷰트란? Test2() 함수를 인자 없이 실행 시켜보았습니다. output: 뭔가 이상하지 않나요? Test2함수에는 인자로 name을 받도록 설정했는데, 함수 실행시 인자를 넣지도 않았습니다. 무엇보다 Main이라는 출력값은 어디서 나온걸까요? 이러한 특이한 상황은 CallerMemberName 어트리뷰트를 사용했기 때문입니다. (어트리뷰트개념이 낯선 분들은 해당 포스팅을 참조하시기 바랍니다.) CallerMemberName 어트리뷰트란? 1) 호출자명 인자 사용 CallerMemberName 어트리뷰트 덕분에, 자동으로 호출자(Caller) 이름(MemberName)을 인자로 사용하게 됩니다. 우리 예시에서 Test2함수의 호출자가 누구죠? Main함수죠. 그렇기 때문에 Main이 출력된겁니다. 2) 디폴트 .. c# 2022. 6. 8. [c# wpf] Control Template 란? / 사용방법 (with Style) 이 글을 읽기 전 선수 지식 포스팅 [c# wpf] Style 태그 사용 방법 [c# wpf] Style 상속 방법(with BasedOn) [c# wpf] StaticResource란? (DynamicResource 비교) 왼쪽 그림은 우리가 아는 기본적인 버튼에 빨간 배경색을 칠한 형태입니다. 그런데 우리가 여기서 하고 싶은 것은 태그를 이용해 타원형 형태로 버튼을 바꿔주는 것입니다. 이때 사용하는 것이 바로 ControlTemplate 입니다. 1. Control Template 사용 방법 1) Button.Template로 감싸기 Button 의 모양을 수정 해줄 것임으로 형태의 태그를 먼저 넣어줍니다. 2) 태그 감싸기 다음으로 태그를 넣어 줍니다. 이 안에 우리가 원하는 형태의 도형을 넣어주게.. c#/wpf 2022. 6. 2. [c# wpf] slider(슬라이더) 사용법 (with 데이터바인딩) 이번 포스팅에서는 위와 같이 슬라이드바를 마우스로 움직여 해당 숫자를 아래에 출력 되도록 해보겠습니다. 1. 기본 UI 와 으로 이루어진 아주 간단한 구성입니다. 2. 이벤트 추가 1) 각 엘리먼트의 이름을 지정합니다. 2) 이벤트 추가 슬라이드 변화를 감지하는 속성값으로 ValueChanged를 사용하고 , 저는 sld_ValueChanged라는 이름으로 이벤트 함수를 만들어보았습니다. //MainWindow.xaml.cs(코드비하인드) 이벤트 함수는 위와 같이 작성해줍니다. 하나씩 설명해드리자면, e.NewValue를 통해 변화가 일어날때마다 해당 값을 가져옵니다. 그리고 txt1(TextBox의 이름) Text속성에 해당 값을 할당하기위해 string 형태로 변형해줍니다. 3) min, max 조절.. c#/wpf 2022. 5. 31. [c# wpf] Data Trigger(데이터트리거) 란? / 사용법 (해당 포스팅은 Property trigger 포스팅을 읽고 왔다는 전제로 작성된 글입니다.) 앞서 다루었던 trigger방식이 Property trigger방식이었다면, 이번 포스팅에서 알아볼 trigger는 Data trigger방식입니다. 기능적 차이가 있다면 기존과 다르게 서로 다른 엘리먼트 사이에서 사용하는 방식이죠! 우리 예시에서는 체크 박스를 클릭하면 버튼에 스타일이 적용되는 UI를 만들고 싶습니다. 1) 먼저 아래와 같이 CheckBox에 x:Name을 추가해줍니다. 이 x:Name은 추후 트리거와 연결을 위해 사용됩니다. 2) 다음으로 기존에 작성했던 Trigger태그를 DataTrigger로 수정합니다. 3) 기존에 Property로 설정되어 있는 부분을 바인딩을 적는 부분으로 대체합니.. c#/wpf 2022. 5. 31. [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. 이전 1 2 3 4 5 6 7 8 다음