본문 바로가기

C#/WPF23

[WPF] ObservableCollection WPF를 사용하면서 처음 알게 된 ObservableCollection 클래스와 프로젝트 진행 시, 헤맸던 부분을 정리해봅니다. 1. ObservableCollection Class항목이 추가 또는 제거되거나 전체 목록을 새로 고칠 때 알림을 제공하는 동적 데이터 컬렉션 저는 프로젝트를 진행할 때, MVVM 패턴에 맞춰서 진행을 하다보니 처음에 가장 어려웠던 점은 VIew와 ViewModel의 연동이었습니다. 대표적으로 ViewModel 단에서 데이터가 변경되어도 View 즉, UI에는 반영이 안되는 것이죠.(🥸 리액트 배울 때는 State에 설정만 해주면 페이지 고침없이도 딴딴하고 바뀌는데,, 라는 생각을 잠깐 했습니다.) 보통은 이럴 때, INotifyPropertyChanged를 구현해서 View.. 2024. 5. 15.
[WPF] View, ViewModel Singleton 지난 프로젝트에서 페이지 전환이 많다보니 생성자를 통해 View나 ViewModel을 넘기는 일이 많았습니다. ☠️ 하지만 새로운 인스턴스를 생성하는 방식으로 넘기게 될 때 동작이 제대로 작동하지 않는 문제가 있었습니다. 예를 들면,123456public void OpenWindowSub1(){    WindowSub1 window = new WindowSub1();    window.DataContext = new ViewModelSub1(new ViewModelMain());    window.Show();} Window를 새롭게 호출하는 경우, DataContext로 연결된 ViewModelSub1에 현재 ViewModelMain의 새로운 인스턴스를 넘겨줄 경우, 인스턴스에 저장된 데이터를 사용하지.. 2024. 5. 12.
[WPF] 생성자 Overloading (2) 프로젝트 준비를 하면서 미리 코드를 작성해보다 마침 정리했던 개념인 생성자 Overloading를 사용해보았습니다. 상속을 받으면 NullPointerException이 나고, 하나의 생성자를 사용하면 문제없이 동작하여 생성자를 상속받을 때 부모 생성자의 코드 삽입 위치를 한 번 정리해보고자 합니다. 🤓 처음에 글을 작성할 때, Overloading을 Overriding으로 잘못 적었는데,다시 한 번 정리하면 다음과 같습니다.Overloading: 메서드 이름은 같지만 매개변수 개수나 타입등을 달리한 여러 개의 메서드를 정의하는 것Overriding: 부모 클래스에서 상속받은 메서드의 내용을 '재정의' 하는 것 ⭐ 현재 생성자의 경우, 이름은 같지만 매개변수 개수가 다르게 정의하고 있으므로 Overlo.. 2024. 5. 11.
[WPF] 생성자 Overloading WPF 프로젝트를 연습해보다가 프로젝트를 개선할 수 있는 방법을 찾아서 정리하고자 합니다. Window안에 UserControl을 선언해서 View-ViewModel간의 데이터를 전달하는 경우가 많았습니다. 특히, 여러 곳에서 호출되는 View-ViewModel은 다양한 초기 데이터를 받게됩나다. 기존에는 생성자 Overriding을 했었고, 일정 부분 코드가 중복되는 건 어쩔 수 없다고 생각했습니다. 그 때, 찾아낸 BASE에 대해 정리해봅니다.  기존 ViewModel123456789101112131415public ViewModelMain(string data1){    Data1 = data1;}public ViewModelMain(string data1, string data2){    Data.. 2024. 4. 27.
[WPF] 한글 Encoding ANSI / UTF8 대용량 데이터처리시 발생되는 UI Freeze 문제 해결 part1 과거의 경험한 내용 중에 대용량의 데이터를 파일이서 잃거나, Rest API를 통해서 전달 받아서, DataGrid나 ListBox에 출력시 UI Freeze 현상과 메모리 사용량이 증가하는 한다는 것을 해결해보려고 노력 kaki104.tistory.com 프로젝트를 하다가 대용량 데이터를 다운로드할 때, 가끔 UI가 멈추는 현상이 발생했습니다. 마침 이와 관련해서 연습해보면 좋은 글이 있어 실습을 진행하는데, 문제가 코드가 아닌 파일에서 발생했습니다. 글에서는 영어로 된 데이터를 사용하지만, 저는 마침 한글로 된 대용량 파일이 있어 사용을 했던 게 문제가 되었습니다. 인코딩이 제대로 되지 않아 한글이 나오지 않는 문제였습니다. 간단하게.. 2024. 4. 22.
[WPF] Static Resource와 Dynamic Resource WPF를 학습하며 헷갈렸던 부분을 정리해두었습니다. 👉 기본 환경- Language: C#, xaml- IDE: Visual Basic 2022- Framework: .NET 8.0WPF에서 Resource는 크게 2가지가 있습니다.Static Resource와 Dynamic Resource 저는 주로 ResourceDictionary를 사용하면 Window에서 Dictionary를 선언하고 Static으로 사용합니다.그런데 이번에 토글버튼을 통해 테마를 변경해보며 DynamicResource를 사용하게 되어 간단하게 차이점을 정리해보고자 합니다. StaticResource *  컴파일 시 리소스 바인딩 * 즉, 애플리케이션이 로드될 때 한 번 리소스를 찾아서 적용하고, 그 이후에는 리소스의 변경을 반.. 2024. 4. 20.