처음 WPF 개발을 시작하는 분들이 List와 ObservableCollection의 차이점이나 사용 방법에 대해서 알지 못하는 것 같아서 간단하게 포스팅을 하려고 합니다. 1. 공통점 vs 차이점 공통점 : 둘다 데이터 목록을 관리합니다. 차이점 : ObservableCollection은 데이터의 추가, 삭제시 UI에 즉시 반영 됩니다. ObservableCollection이 List에 비해 메모리를 좀더 차지 합니다. 대량의 데이터를 화면에 출력해야하는 경우 ObservableCollection을 사용하면, 성능에 영향을 줄 수 있습니다. (데이터 하나 추가할 때마다 CollectionChanged 이벤트가 계속 발생 -> UI에 반영) 일반적으로 List가 ObservableCollection에 비..
2022.03.02 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part3 - Busy 화면 구현 2022.02.24 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part2 - Frame Navigation 2022.02.21 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part1 여러가지 형태의 팝업을 만들어서 사용할 수 있는데, 이번 포스팅에서는 레이어 팝업을 만들어 보도록 하겠습니다. 레이어 팝업이라는 것은 팝업 처럼 보이기는 하지만 실제 팝업은 아니고, Border같은 컨트롤의 보이기 속성을 변경하면서 팝업 처럼 보이는 효과를 내는 것을 이야기 합니다. 또한, 별도의 윈도우를..
2022.02.24 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part2 - Frame Navigation 2022.02.21 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part1 애플리케이션에서 시간이 오래 걸리는 작업을 진행할 때 화면에 Busy...라는 메시지를 출력하면서 전체 화면을 Dim처리하는 방법에 대해서 간단히 알아 보도록 하겠습니다. 1. MainWindow.xaml MainWindow.xaml에 Busy가 출력되도록 수정합니다. Busy 상태에서는 화면에 다른 컨트롤을 사용할 수 없도록 Border의 Background 컬러를 추가하고, ViewModel의 IsBusy 프로퍼티와 Converter를 이..
Group을 추가하는 방법에 대해서 검색해보면 대부분 Code를 이용해서 CollectionViewSource를 생성해서 사용하는 방법이 나오고, MVVM Pattern에서는 어떻게하는지 잘 나오지 않습니다. 그래서, CollectionViewSource에 대해서 간단히 알아보고, MVVM Pattern에서는 어떻게 사용하는지 알아보도록 하겠습니다. 1. CollectionViewSource CollectionView클래스의 파생된 클래스로, CollectionView 속성을 설정하고, 설정된 기본 보기를 다른 컨트롤에 전달할 수 있는 기능이 있습니다. 정리를 하자면, 컨틀로과 뷰모델 사이에 CollectionViewSource 인스턴스가 하나더 있으면서, Sort, Filter, Group을 원본 데이..
Visual Studio로 개발하는 분들 중은 c# 코딩 중 prop 치고 Tab키를 두번 누르면 어떻게되는지 아실 것이라고 생각합니다. 그렇쵸? 그래도, 혹시 모르는 분도 있을 수 있으니 아래 이미지를 추가하겠습니다. 아래 이미지처럼 입력하면 인텔리센스에 의해서 드롭다운 팝업이 출력되면서 prop와 관련된 녀석들이 나오는데, 여기서 탭키를 두번 눌러주면 아래처럼 프로퍼티를 쉽게 정의할 수 있는 코드가 생성됩니다. 여기서 int를 그냥 사용하실려면, tab 아니고, 문자열로 바꾸실려면 str치고 탭, 탭 눌러주시면 string으로 변경되면서 커서가 MyProperty로 이동합니다. 그러면 프로퍼티명을 입력하고 엔터를 치면 하나의 프로퍼티가 만들어 집니다. 참 쉽죠? 이렇게 코드를 하나의 몇개의 글씨를 이..
2022.02.21 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part1 이번 포스팅에서는 Frame에서 Navigiation하는 방법에 대해서 설명하고 코드를 작성해 보도록 하겠습니다. 1. FrameBehavior ViewModel에서 Frame를 직접 컨트롤을 하기는 어렵습니다. Frame의 Navigate() 메소드와 각종 이벤트들을 사용해야 하기 때문인데, 이렇게 뷰모델에서 직접 접근을 하기 어려운 컨트롤이나 컴포넌트를 쉽게 제어하고 사용하기 위해서는 Behavior을 만들어 주어야 합니다. FrameBehavior.cs 작동 방식은 FrameBehavior에 추가한 NavigationSource DP를 ViewModel의 프로퍼티와 바인딩을 한 후 V..
별도의 3rd party 컨트롤을 사용하지 않는 경우 DataGrid를 많이 사용하는데, RowNumber를 출력하는 방법을 찾아보니 MVVM pattern에서 사용하기 쉬운 방법에 대해서 설명되어 있는 것이 없는 것 같아서 간단하게 만들어 보았습니다. 특히, Sort했을 때, Row 추가, 삭제될 때도 계속 번호를 유지 할 수 있으니 개발하실 때 참고하시면 좋을 것 같습니다. 제가 사용한 방법은 Behavior을 이용합니다. Adding right-aligned row numbers to a DataGridRowHeader in WPF | Magnus Montin Adding right-aligned row numbers to a DataGridRowHeader in WPF This post provi..
2022.04.21 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part6 - 유효성 검사 추가 2022.03.11 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part5 - 금액 표시 컨트롤 만들기 2022.03.03 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part4 - LayerPopup 추가 2022.03.02 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part3 - Busy 화면 구현 2022.02.24 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임..
ListView에 View 프로퍼티에 넣어서 사용할 CustomView를 만들고, 사용하는 방법에 대해서 알아 보겠습니다. Microsoft Docs에 있는 문서를 보시려면 여기를 참고하시기 바랍니다. 1. PlainView Custom Control 추가하기 프로젝트 팝업 메뉴 -> Add -> New Item -> WPF -> Custom Control(WPF)를 선택 후 Name에 PlainView를 입력하고 Add를 클릭합니다. 빨간 테두리 부분의 Themes/Generic.xaml과 PlainView.cs 파일이 추가됩니다. 이전 포스트에서 리소스 딕셔너리는 App.xaml에서 연결시켜 주어야 하지만, Generic.xaml은 그렇게 할 필요가 없이 자동으로 프로젝트에 로딩 됩니다. 2. Pla..
WPF에서 목록형 데이터를 출력하는 대표적은 방법은 ListBox, DataGrid,, ListView 이렇게 3가지를 이야기할 수 있습니다. 각 컨트롤의 기본적인 특징을 알아보겠습니다. ListBox는 목록을 간결하게(1개의 프로퍼티) 표현하기 위해서 사용합니다. 물론, ItemTemplate를 이용해서 모든 데이터를 다 출력할 수도 있습니다. DataGrid는 목록을 출력하고 편집하는 용도로 사용합니다. IsReadOnly가 true라면 단순 출력용으로도 사용할 수 있습니다. ListView는 DataGrid와 ListBox의 중간 형태로, 여러개의 컬럼을 보기 좋게 표현할 수 있습니다. 다만, 다른 2개의 컨트롤과 큰 차이점은 ListView.View라는 프로퍼티를 통해서 보이는 방식을 완전히 다른..
- Total
- Today
- Yesterday
- Windows 10
- XAML
- Cross-platform
- ef core
- #Windows Template Studio
- .net
- #uwp
- dotNETconf
- Bot Framework
- uno platform
- IOT
- #MVVM
- Microsoft
- PRISM
- #prism
- Behavior
- Visual Studio 2022
- UWP
- Always Encrypted
- ComboBox
- .net 5.0
- windows 11
- LINQ
- WPF
- kiosk
- uno-platform
- MVVM
- visual studio 2019
- Build 2016
- C#
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |