분류 전체보기252 [WPF][MVVM][Study] MVVM 실습 1 - 단위 변환기 MVVM을 만들면서 이해하기 위해 간단한 실습을 해보았다. 아래 블로그를 참고해서 만들었다. https://esound.tistory.com/10 [C# WPF] MVVM 간단하게 시작하기 - 1 (데이터바인딩, 연동) MVVM, Model - View - ViewModel WPF에서 사용할 수 있는 디자인패턴입니다. 이번 글과 앞으로 이어지는 글에서 MVVM을 쉽고 간단하게 사용할 수 있도록 공부하며 배운 내용을 정리하겠습니다. View : 사용자 esound.tistory.com 그럼 지금부터 WPF에서 MVVM 패턴을 이용한 단위 변환기 만들기 설명을 시작하겠다. 1. WPF 시작 - 기본적으로 WPF 앱 프로젝트 파일을 생성한다. 2. 폴더 작업 - 솔루션 탐색기에서 프로젝트 하위에 Model, .. 2023. 9. 20. [WPF][C#][Study] WPF 시작 6일차 1. 데이터 바인딩 - 두 개의 데이터/ 정보에 대한 소스를 결합하고 데이터 동기화를 유지하는 기술 - source와 destination UI 구성간에 바인딩을 주로 함 - {Binding} 이렇게 중괄호 사이에 넣어서 사용 [예제] [결과] - TextBox의 Name을 txtValue로 설정 - TextBlock의 Text에 바인딩을 시킴 => Binding Path를 Text로 연결 + ElementName을 txtValue로 설정 => TextBlock의 Text가 현재 바인딩 하고 있는 TextBox에 사용자가 적은 Text가 그대로 연결되어 나옴 1-1. DataContext - 바인딩의 기본 소스 - 기본 설정값은 따로 없음(모두 null 값을 가짐) [예제] 1) XAML 2) Code-.. 2023. 9. 20. [WPF][C#][Study] WPF 시작 5일차 1. ToolTips - 말 그대로 툴팁을 지원하는 컨트롤 - 단순 문자열이 아닌 객체 유형이기 때문에 어느 곳에나 넣을 수 있음 - ToolTipService.ShowDuration 속성을 이용해 표시되는 시간도 조절할 수 있음 Click here! (결과) 2. 텍스트 렌더링 1) TextFormattingMode - Ideal(기본)과 Display 중에서 선택 가능 - 보통 Ideal 설정이 적합하기에 변경하지 않고 그대로 둠 - 매우 작은 텍스트를 렌더링해야 하는 경우에는 Display 설정이 더 나을 수 있음 TextFormattingMode.Ideal, small text TextFormattingMode.Display, small text TextFormattingMode.Ideal, la.. 2023. 9. 19. [WPF][C#][Study] WPF 시작 4일차 1. CheckBox [XAML] Application Options Enable feature ABC Enable feature XYZ Enable feature WWW [결과] 2. CheckBox - IsTreeState - true, false 외에 null 까지 3가지 상태로 표현하는 방법 [XAML] Application Options Enable all Enable feature ABC Enable feature XYZ Enable feature WWW [Code-Behind] using System; using System.Windows; namespace WpfTutorialSamples.Basic_controls { public partial class CheckBoxThreeState.. 2023. 9. 18. [WPF][C#][Study] WPF 시작 3일차 1. TextBlock - Margin : 상하좌우로 공간을 띄워줌 - TextTrimming : 문장을 나타낼 방법을 정해줌 - Foreground : 글자 색을 지정해줌 - : 줄 바꿈을 해줌 [XAML] TextBlock의 "LineBreak" 기능을 이용해 문장을 여러 줄로 나눌 수 있다. "TextTrimming"을 "CharacterEllipsis"로 지정하면 남은 문장을 생략형으로 표현해준다. "TextWrapping"을 "Wrap"로 지정하면 자동으로 줄을 나누어준다. [결과] 2. TextBlock - 대표 Inline 기능들 - : 굵게 표시 - : 기울임체 표시 - : 밑줄 표시 [XAML] "Bold"를 이용해 "굵게" 표시 가능 "Italic"을 이용해 "기울임체" 표시 가능 "U.. 2023. 9. 17. [C#][Study][기초다지기] ref, out의 차이점 1. out - 매개변수를 참조로 전달 - 인수가 초기화 되지 않았어도 전달 가능 - 내부에서 변수에 값을 할당 해주어야 함 2. ref - 매개변수를 참조로 전달 - 인수가 초기화 되지 않은 경우 전달 불가(오류 발생) ex) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace command { class Program { public static void Out(out int x) { x = 1; // 내부에서 해당 변수에 값을 할당 해주어야 함! x++; // 단독으로는 쓰일 수 없음 } public static void Reference(ref int x) { x++; } sta.. 2023. 9. 16. [C#][Study][기초다지기] Main함수, 명령줄 인수 Main(string[] args) : 명령줄 인수 - Main() 함수는 프로그램 실행을 시작하는 곳이기에 다른 어떤 메소드에서도 매개변수를 허용하지 않는다. - Command line(명령줄)을 통해 매개변수를 허용하는데 런타임 시 n개의 매개변수를 받을 수 있는 배열형 매개변수를 선언 받는다.(Main(string[] args)) - 명령줄 인수를 사용해보는 두가지 방법이 있다. [사용법 1] cmd로 실제 매개변수 선언 [사용법 2] VS 내에서 디버그 매개변수를 미리 선언 아래의 코드를 두 예시에서 동일하게 사용했다. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace comm.. 2023. 9. 16. [WPF][C#][Study] WPF 시작 2일차 1. XAML 이벤트 - 마우스 이벤트 - MouseUp : 마우스를 놓을 때 발생 - MouseDown : 마우스를 누를 때 발생 - 이벤트를 생성하는 2가지 방법 1) XAML에서 직접 호출 // 1) 위처럼 MouseUp의 델리게이트를 직접 연결해줌 2) Code-behind에서 델리게이트 추가 using System; using System.Windows; using System.Windows.Input; namespace WpfTutorialSamples.XAML { public partial class EventsSample : Window { public EventsSample() { InitializeComponent(); // 2) Code-behind에서 델리게이트에 직접 추가함 pnl.. 2023. 9. 15. [WPF][C#][Study] WPF 시작 1일차 1. Hello World를 출력했다! Hello, WPF! 2. XAML - eXtensible Application Markup Language의 약자 - GUI를 묘사하기 위한 Microsoft XML의 한 형태 - 간단하게 GUI를 생성하고 편집할 수 있다는 장점이 있음 - 꺾쇠괄호()에 컨트롤의 이름을 넣어 컨트롤을 생성하고, 끝맺음 태그를 쓰거나 시작 태그에 슬래시를 써서 닫아줘야 함 // 1 // 2 - 대소문자를 구별해주어야 한다. - 각 컨트롤은 속성을 가질 수 있음 - 속성은 두가지 방법으로 표현할 수 있음 // 1번째 방법 // 2번째 방법 Bold A button - WrapPanel을 이용해 여러 하위 요소들을 묶을 수 있음 // 1번째 방법 Bold Multi Color Butt.. 2023. 9. 14. [프로그래머스][C++] 덧칠하기 #include #include using namespace std; int solution(int n, int m, vector section) { int answer = 0; int index = 0; for(int i = section[index++]; i 리턴 if(index >= section.size()) return answer; } i = section[index]; // 현재 섹션을 반복자로 재정의 } return answer; } 1. answer과 index를 선언 2. 반복자 i가 섹션의 0번째 인덱스부터 시작해 n이 될 때까지 반복을 진행한다. 3. 매 반복은 페인트칠을 하는 횟수를 의미하므로 answer을 1씩 증가시킨다. 4. 이후 섹션의 다음 수가 현재 수에 롤러의 길이를 더.. 2023. 9. 13. [프로그래머스][C++] 카드 뭉치 #include #include using namespace std; string solution(vector cards1, vector cards2, vector goal) { string answer = "Yes"; int x = 0; // card1에서 나와야하는 단어의 인덱스 번호 int y = 0; // card2에서 나와야하는 단어의 인덱스 번호 for(int i = 0 ; i < goal.size(); i++) { string curWord = goal[i]; if(curWord == cards1[x]) { // 현재 단어가 카드뭉치 1에 있는 경우 x++; } else if(curWord == cards2[y]) { // 현재 단어가 카드뭉치 2에 있는 경우 y++; } else { ans.. 2023. 9. 12. [프로그래머스][C++] 추억 점수 #include #include #include using namespace std; vector solution(vector name, vector yearning, vector photo) { vector answer; map scores; for(int i = 0 ; i < name.size(); i++) { // 이름별 그리움 점수 저장 scores[name[i]] = yearning[i]; } for(int i = 0; i < photo.size(); i++) { answer.push_back({0}); for(int j = 0; j < photo[i].size(); j++) { string curName = photo[i][j]; answer[i] += scores[curName]; } } r.. 2023. 9. 12. 이전 1 ··· 11 12 13 14 15 16 17 ··· 21 다음