WPF : ViewModel - DI(의존성 주입)
·
FRAMEWORK/WPF
1. DI(Dependency Injection, 의존성 주입)에 대하여필요한 객체를 밖에서 넣어주는 것내부에 의존성을 직접 만드는 것이 아니라, 외부에서 의존성을 주입시킨다.인터페이스와 외부 주입이 있어야 비로소 의존성 주입이 완성됨.2. 강한 결합(ViewModel 에서 DI 가 필요한 이유)ViewModel 내부에서 객체를 생성(구현체)하여 해당 객체에 의존성을 가지는 경우를 말함.매우 강한 결합성을 가져, 내용 변경에 매우 취약함._provider = new DummyDataProvider();> 다른 Model 변경시 ViewModel 변경이 필요하다.> ViewModel 은 본 역할인 View 에 대한 처리만을 담당하도록 책임을 분리시켜야 할 필요성이 있다.3. 약한 결합(의존성 주입)View..
WPF : Model
·
FRAMEWORK/WPF
1. Model(Data) 에 대하여1) DataMVVM 중 Model은 Data 계층에 속하며, MVVM 구조 중 가장 중요한 부분이라고 할 수 있다.Data 는 순수 데이터로만 이루어져있지 않고, 여러 레이어로 분리되어 체계적으로 사용됨.2) 구분Entity(순수 데이터)Serivce(로직)DataProvider(접근) => RepositoryDTO(외부 데이터)2. Entity(순수 데이터)데이터 그 자체로직이 없으며, 상태만을 가지는 순수 데이터를 의미함.public class Product{ public string Title { get; set; }}3. Service(로직)데이터를 어떻게 처리할 것인지?public class KeywordService{ public List Ext..
WPF : 타이머 만들기
·
FRAMEWORK/WPF
1. 사전 준비사항- MVVM 구조에 대한 이해더보기2026.04.23 - [C#/Study] - WPF : MVVM(Model - View - ViewModel) WPF : MVVM(Model - View - ViewModel)1. MVVM [View (XAML)] ↓ Binding[ViewModel] ↓ 데이터 처리[Model]2. Model(Data)데이터UI 를 알 필요없음로직 Xpublic class Car{ public string Name { get; set; } public int Speed { get; set; }}3. ViewModel 1) 역할UI에 보여줄 데이터marin0806.tistory.com - DispatcherTimer Class(타이머 클래스)더보기※ Dispatcher..
WPF : MVVM(Model - View - ViewModel)
·
FRAMEWORK/WPF
1. MVVM [View (XAML)] ↓ Binding[ViewModel] ↓ 데이터 처리[Model]2. Model(Data)데이터UI 를 알 필요없음로직 Xpublic class Car{ public string Name { get; set; } public int Speed { get; set; }}3. ViewModel 1) 역할UI에 보여줄 데이터 관리(Model > ViewModel > View)UI 이벤트 처리(View > ViewModel > Model)상태 변경 2) 핵심 기능Property(데이터 처리)Command(명령)using System.ComponentModel;using System.Windows.Input;public class MainViewModel ..
WPF : WPF 에 대하여
·
FRAMEWORK/WPF
1. WPF 란?예전 Framework 들의 전형적인 Event 기반 함수 호출 방식에서 벗어나, 데이터 바인딩 개념이 들어간 Framework 임MVVM(Model - View - ViewModel) 개념 기반으로 UI 와 Data가 완전히 분리되어 작동함[ View (XAML) ] ↓[ ViewModel (Code-behind) ] ↓[ Model (Data) ]2. View : XAML코드 베이스가 아닌 HTML 구조로 디자이너 친화적인 UI 레이어라고 할 수 있음> 이벤트 기반> 바인딩 기반 오로지 UI 만 존재하고, Logic이 없는 것이 가장 큰 특징3. ViewModelUI 와 Model(Data)를 연결하는 역할로 CodeBehind 역할을 담당Status 와 Logic ..
MFC : 프로젝트 타입에 대하여
·
FRAMEWORK/MFC
주요구조(3가지)더보기대화상자 기반(Dialog Based)단일 문서(SDI)다중 문서(MDI)1. 대화상자 기반(Dialog Based)1) 전체 구조CWinApp └─ CDialogEx (메인 UI)2) 특징가장 단순함UI 중심(버튼, 입력창 등)이벤트 기반 처리3) 코드 구조class CMyDlg : public CDialogEx4) 장점빠르고, 단순함5) 단점확장성 낮음대규모 프로젝트에는 부적합함2. 단일 문서(SDI, Single Document Interface)1) 전체 구조CWinApp └─ CFrameWnd (메인 창) └─ CView (화면) └─ CDocument (데이터)> View / Document / Frame 으로 각 역할이 나눠져있는 것이 핵심 2..
MFC : 동작 구조에 대하여
·
FRAMEWORK/MFC
● 전체구조 한눈에 보기더보기더보기더보기WinMain ↓CWinApp (앱 시작) ↓InitInstance() ↓Main Window 생성 ↓Message Loop (핵심) ↓메시지 처리 (Message Map) ↓UI / 로직 실행1. 시작점: (WinMain → CWinApp) 1) WinMain : Windows 기본 시작점MFC 내부적 처리(사용자 조작 X)2) CWinApp(앱 클래스)class CMyApp : public CWinApp프로그램 전체를 관리하는 핵심 클래스3) InitInstance()BOOL CMyApp::InitInstance() 다이얼로그 생성메인 윈도우 실행2. 메시지 루프: MFC는 이벤트 기반 구조1) 메시지 흐름사용자 클릭(Button 등)Windows 메시지 생성(..
MFC : Dialog에 대하여
·
FRAMEWORK/MFC
1. Dialog란?버튼, 텍스트, 리스트 같은 UI를 가지고 있는 "창"2. Dialog 구조1) 리소스(화면, View, Front)화면 레이아웃버튼 위치텍스트 박스크기 및 배치2) 소스코드(클래스, Action, back)동작처리class CMyDialog : public CDialogEx > 버튼 클릭 이벤트> 값 처리> 로직 수행 3. 메시지맵(MESSAGE MAP): MFC에서 메시지맵이란 리소스(버튼, 텍스트 등)와 소스코드(함수)를 이어주는 유용한 도구임.BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx) ON_BN_CLICKED(IDC_BUTTON1, &CMyDialog::OnBnClickedButton1)END_MESSAGE_MAP() 3.1 동작 흐름1) 사용..
QT / DB 연결 및 사용(MySQL 기준)
·
FRAMEWORK/Qt
1. 연결더보기더보기1. QSqlDatabase 객체 생성QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "EnrollConnection");> driver : "QMYSQL", "QSQLITE", "QPSQL" 등> connectionName : 여러 연결을 고려한 구분자(옵션, 없어도 됨) 2. 연결 정보 설정// 예db.setHostName("127.0.0.1"); // IP주소db.setPort(3306); // 포트번호db.setDatabaseName("your_database"); // DB이름db.setUserName("root"); // IDdb.setPassword("1234"); // Password 3. 열기if (!db.open()) ..