전체 글 34

[WPF] Radio Button 에 enum 을 이용한 Converter 사용법

프로젝트를 진행하다가 CustomControl 로 CustomToggleButton 을 만들었다.이 CustomControl 에는 2 개의 RadioButton 이 존재하고눌린 버튼을 하나의 Enum 변수를 사용하여 현재 값을 UnToggle / Toggle 값으로 받고 싶었다. 버튼의 모양은 다음과 같다. 왼쪽이 눌렸을 때는 UnToggle / 오른쪽이 눌렸을 때는 Toggle 이란 것을 인지하고 싶었다. bool 변수 2개를 가지고 작업을 해보았는데 값이 변할때마다 true, false 계속 변하다 보니 코드 분석도 어렵고 결과적으론 잘 작동하지도 않았다.   CustomControl 에 2개의 RadioButton ..

WPF 2024.07.11

[WPF] ObservableCollection Filtering 사용법 (ICollectionView)

ItemsControl 를 이용하다보면 Filtering 을 해야할 경우가 생긴다. 내가 기존에 사용하던 것은 public ObservableCollection? Modules { get; set; } 위 속성을 ItemsControl 에 ItemsSource 에 바인딩하여 보여주고 있었는데TextBox 를 추가하여 Filter 해야하는 일이 생겼다.  위 이미지 처럼 입력한 text 만 찾을 수 있는 기능이 필요했다.  public ICollectionView FilteredModules { get; set; } // init FilteredModules = CollectionViewSource.GetDefaultView(Modules); OnPropertyChanged(nameof(..

WPF 2024.07.04

[WPF] View 를 미리 랜더링 하는 방법

WPF 에서 Content Control 을 하나 만들어서 Binding 값을 변경하여 View 를 변경하는 방법을 사용할 수 있다.그런데 만약 특정 View 가 여러개의 컨트롤 (예를 들면 컨트롤을 포함한 큰 DataGrid) 을 보여줘야 한다면 그 View 를 Load 할때 느려지는 문제가 발생할 수 있다. 그래서 미리 Instance 를 불러오거나 ContentControl 에 Binding 을 먼저 시켰다가 변경하거나 하는 방법들을 사용해 보았지만 효과는 없었던 것 같다. Chat GPT, 구글링 등을 해보았지만 명쾌한 해답이 나오지 않아서 스스로 생각한 방법을 적용해보기로했다.추가 ContentControl 을 만들어서 View 를 집어넣고 Hidden 시키는 방법이다.  ..

WPF 2024.07.01

[WPF] 가변 DataGrid

DataGrid 를 만들다 보면 Row, Column 을 내가 원하는데로 설정하고 싶은 경우가 있다.또한, DataGrid 안에 Control 을 넣거나 Header 의 Control 을 변경하고 싶을 수도 있다. 그래서 CustomControl 로 DataGrid 를 제작해보았다.DataGrid 에는 워낙 많은 기능들이 있는데 그 중 필요한 속성만 골라 설정하고 사용해보았다. 1. CustomControl 생성 - SampleGrid.xaml - SampleGrid.cs 2. SampleGrid.xaml 작성 ..

WPF 2024.06.28

HediSQL 에서 PostgreSQL 내보내기 오류 발생 시 해결법

HediSQL 에서 MySQL 을 자주 사용하였는데, 이번에 PostgreSQL 을 사용하면서 MySQL 에서 내보내기 했던게 정상 동작 안해서 헤멘적이 있다.  이렇게 내보내기를 하면  오류: 구문 오류, "CREATE" 부근 LINE 1: SHOW CREATE DATABASE "public"가 발생한다. 처음엔 호환이 안되는 것인가... 하고 MySQL 로 다시 넘어갈 생각까지 하고 있었다. 그런데 알고보면 간단하게 해결 가능한 문제였다.데이터베이스 생성의 체크박스를 해제하면 된다.  이렇게 하면 정상 내보내기가 가능하다. 이 글로 인해 삽질 시간을 1분이라도 줄이는데 도움이 되었으면 한다.. ㅎㅎ

카테고리 없음 2024.06.24

[WPF] WindowStyle = None 의 경우 최대화시 작업표시줄에 가려지는 문제

WPF 에서 기본으로 제공하는 Window Style 은 그닥 이쁘지 않기때문에 커스터마이징으로 Window Style = None 으로 하는 경우 많다. 열심히 UI 를 작업하던 중 최대화를 하였더니 UI 가 작업표시줄에 가려지는 문제가 발생했다.  public MainWindow() { InitializeComponent(); if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) { return; } DataContext = App.Current.Services.GetService(type..

카테고리 없음 2024.06.21

[WPF] C# MVVM

WPF 에서 MVVM 패턴을 사용할 때, 사용자가 직접 ICommand, INotifyPropertyChanged 등을 만들어서 사용할 수도 있지만 Microsoft 에서 만든 CommunityToolkit.MVVM Nuget Package 를 사용하면 훨씬 더 용이하게 MVVM Pattern 을 이해하고 사용할 수 있다.더불어 DependencyInjection, Behavior 도 같이 사용하면 좋다. 사용 Nuget Package - CommunityToolkit.MVVM - Microsoft.Extensions.DependencyInjection - Microsoft.Xaml.Behaviors.Wpf CommunityToolki.MVVM - ICommand, INotifyProperty 등을 Nu..

WPF 2024.06.12