2022.04.11 - [WPF .NET] - 대용량 데이터처리시 발생되는 UI Freeze 문제 해결 part1 이전 포스트에서 Yield를 이용해서 데이터를 조금씩 읽어서 처리할 수 있는 방법을 살펴보았습니다. 하지만, 여전히 UI Freeze 문제를 해결할 수는 없었는데요, 음... 오늘은 UI 출력 방법을 바꾸어 보도록 하겠습니다. 1. foreeach를 이용해서 데이터를 하나씩 그냥 추가하면 않될까? yield return을 이용해서 데이터를 조금씩 가지고 올 수 있으면, foreach를 이용해서 가져온 데이터를 하나씩 ListBox에 넣는다면? ItemsSource는 데이터를 하나씩 넣을 수 없는데? ObservableCollection을 사용해? 여러가지 생각들이 꼬리에 꼬리를 물면서 저를 ..
과거의 경험한 내용 중에 대용량의 데이터를 파일이서 잃거나, Rest API를 통해서 전달 받아서, DataGrid나 ListBox에 출력시 UI Freeze 현상과 메모리 사용량이 증가하는 한다는 것을 해결해보려고 노력을 했던 적이 있습니다. 2022.04.04 - [WPF .NET] - Async/Await를 사용해서 UI Freeze 해결하기 이전 포스트의 async/await를 이용해도 발생하는 현상인데.. 모든 데이터를 조회하고, 컨트롤에 출력하는 시간이 좀 걸리더라도 (화면에 프로그래스 출력하고 카운트 출력하면 그래도 기다릴 수 있을 것이라고 생각하면서..), UI가 부드럽게 동작할 수 있는 방법을 찾아보려고 합니다. 먼저, 대용량 파일을 불러오는 화면을 만들어 보겠습니다. 프로젝트에 여러개의..
UI Freeze은 화면이 사용자의 입력에 반응하지 않고, 멈추는 현상을 이야기 합니다. 옛날에는 이 문제를 해결하기 위한 여러가지 꼼수를 사용해야 했지만, 이제는 async/await를 이용하면 쉽게 해결할 수 있습니다. 다들 알고 계신가요? 흐흐흐 우선 이 현상이 발생되는 예제를 만들어 보도록 하겠습니다. 1. MainWindow.xaml (UI Freeze 발생) CategoryComboBox1, CategoryListBox1, CategoryComboBox2, CategoryListBox2 이렇게 4개의 컨트롤을 배치하고, 각 컨트롤의 SelectionChanged 이벤트를 연결했습니다. 콤보박스나, 리스트박스의 SelectionChanged 이벤트가 발생되면, GetDatas 메소드를 호출해서 ..
옛날에 Database 프로그램을 배우기 시작할 때, 셈플 애플리케이션을 찾아보면 대부분 Northwin라는 회사의 데이터베이스를 이용하고 있었는데요. 이것은 Microsoft가 셈플로 사용하라고 공개를 해 놓은 것입니다. Microsoft github sql-server-samples 레파지토리에 생성하는 쿼리가 있기 때문에 누구나 쉽게 생성하고 사용할 수 있습니다. 쿼리와 Visual Studio를 이용해서 LocalDB에 Northwind database를 생성하는 방법을 설명합니다. 1. Visual Studio 2019, 2022 Visual Studio Installer를 설치할 때 Data storage and processing workload를 체크하고 설치를 해야 다음 작업을 진행할 수..
WPF .Net 5 프로젝트를 생성한 후 ClickOnce로 배포 패키지를 만들면, ClickOnce 버전은 생성되지만, 그 버전 넘버를 애플리케이션에서 불러와서 사용하는 방법은 현재 존재 하지 않습니다. 이 기능은 .Net 6에서 구현될 것이라고 생각했는데, .Net 7 preview에서도 현재까지는 구현되어있지 않는것 같습니다. 이 부분에 대한 자세한 사항은 여기를 참고하시기 바랍니다. 그래서, 검색해보니 비슷한 기능을 할 수 있는 2가지 방법이 있는데, 우선 WpfSettings라는 오픈소스를 이용하는 방법으로 시도를 해보지 않아, 링크만 남겨 놓도록 하겠습니다. 두번째 방법은 빌드 일시를 애플리케이션에 강제로 입력해서 빌드하는 방법으로, 사용하기가 좋아서 이 방법을 이용하시면 쉽게 구현이 가능하실..
2022.03.15 - [WPF] - [기초] ComboBox, ListBox 중요 프로퍼티 사용법 part2 2022.03.14 - [WPF] - [기초] ComboBox, ListBox 중요 프로퍼티 사용법 part1 마지막으로, SelectedValue, SelectedValuePath에 대해서 설명하도록 하겠습니다. SelectedIndex는 별도로 설명할 필요는 없을 것 같아서 생략하겠습니다. 1. SelectedValue, SelectedValuePath 활용 Next1Window.xaml 아래 Detail을 추가했습니다. CodeModel.cs 추가 public class CodeModel { public string Code { get; set; } public string Name { g..
2022.03.14 - [WPF] - [기초] ComboBox, ListBox 중요 프로퍼티 사용법 part1 이번 포스트에서는 SelectionChanged 이벤트를 이용하는 기본 방법과 이벤트 Arguments를 사용하는 방법에 대해서 알아 보도록 하겠습니다. 먼저, part1에서 만들었던, 리스트박스에서 아이템을 선택하면 Delete 버튼이 활성화되는 예제를 SelectionChanged 이벤트를 이용해서 만들어 보도록 하겠습니다. 1. 컨트롤의 이벤트가 발생했을 때 뷰모델에 전달하는 방법 컨트롤의 이벤트를 뷰모델에 전달하기 위해서는 Microsoft.Xaml.Behaviors.Wpf nuget package가 필요 합니다. 프로젝트에 해당 nuget package를 설치합니다. 이 녀석에 대한 더..
ComboBox와 ListBox 컨트롤을 처음 접하거나, MVVM 패턴으로 사용하는 것이 익숙하지 않은 개발자를 위해 컨트롤 사용 방법을 자세하게 포스팅 하도록 하겠습니다. 1. Overview ComboBox : 오른쪽에 아래 화살표(?)를 클릭하여 드롭다운 목록을 보이도록 한 후 원하는 아이템을 선택할 수 있는 컨트롤로 버튼을 눌러야 데이터의 목록이 출력되며, 무조건 1개만 선택 할 수 있습니다. 더 자세한 사항은 여기를 참고하시기 바랍니다. ListBox : 데이터의 목록을 출력한 후 아이템을 선택할 수 있는 컨트롤로 처음부터 데이터 목록 보이며, 1개 혹은 여러개의 아이템을 선택할 수 있습니다. 더 자세한 사항은 여기를 참고하시기 바랍니다. 2. 필수 프로퍼티 ComboBox, ListBox를 사..
2022.02.21 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part1 이번에는 프레임워크에서 사용할 수 있는, 금액 표시 컨트롤을 만들어 보도록 하겠습니다. 커스텀 컨트롤을 만드는데, 기존 프로젝트에 추가하면, 나중에 컨트롤만 따로 다른 프로젝트에서 사용하기가 번거로우니, 커스텀 컨트롤 전용 프로젝트를 만들어서 재사용성을 높이도록 하겠습니다. 1. 프로젝트 추가하기 WPF로 검색하면, WPF Application, WPF Class Library, WPF Custom Control Library, WPF User Control Library 이렇게 4가지가 나옵니다, WPF Application : WPF 응용 프로그램 프로젝트로 빌드하면, exe 파일이 만..
2022.03.08 - [WPF] - List vs ObservableCollection? part1 2023-02-02 Microsoft.Toolkit.Mvvm nuget package에서 CommunityToolkit.Mvvm으로 변경했습니다 지난 포스트에 이어서 계속 진행 하도록 하겠습니다. 아래 화면에서 Add 버튼을 눌렀을 때의 동작을 추가하도록 하겠습니다. 1. Add 버튼 처리 MainViewModel.cs를 수정합니다. Add에서 LeftPeople와 RightPeople에 Insert를 이용해서 신규 사용자를 추가합니다. private void OnRightButton(string parameter) { switch (parameter) { case "Refresh": break; cas..
- Total
- Today
- Yesterday
- .net 5.0
- Cross-platform
- .net
- Microsoft
- ef core
- ComboBox
- Bot Framework
- C#
- uno-platform
- Behavior
- Visual Studio 2022
- UWP
- #MVVM
- uno platform
- Always Encrypted
- dotNETconf
- #prism
- LINQ
- XAML
- Build 2016
- PRISM
- Windows 10
- IOT
- #Windows Template Studio
- windows 11
- WPF
- kiosk
- visual studio 2019
- #uwp
- MVVM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |