✍ 사용자 정의 컨트롤 생성 💻 LoginControl.xaml 생성 (사용자 정의 컨트롤) 💻 SignupControl.xaml 생성(사용자 정의 컨트롤) 💻 ChangePwdControl.xaml 생성(사용자 정의 컨트롤) ✍ ViewModel 생성 💻 LoginControlViewModel using CommunityToolkit.Mvvm.ComponentModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SunjeongTalk.ViewModels { [ObservableObject] public partial cl..
💻 NuGet 패키지 추가 ✔ CommunityToolkit,Mvvm ✔ FontAwesome6.svg ✔ Microsoft.Extensions.DependencyInjection ✔ Microsoft.Xaml.Behaviors.Wpf ✔ MySql.Data 💻 의존성 주입 using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace SunjeongTalk { /// /..
✍ 데이터 바인딩이란? Control 혹은 Element를 데이터에 연결시키는 기술이다.
✍ 의존 프로퍼티, 의존 속성 기존의 닷넷 Property에 WPF 요소를 가미하여 새롭게 탄생 XAML, C# 코드 비하인드에서 사용 가능하며 의존속성 값이 변경되면 자동으로 어떤 것을 로드되게 하거나 렌더링 되도록 할 수 있는데 애니메이션, 스타일링, 데이터바인딩 등에 자주 사용된다. 어떤 속성을 애니메이션 시켜야 하거나 데이터 바인딩을 하려면 그 속성은 반드시 의존 속성이어야 한다. 기본으로 제공되는 UI컨트롤은 대부분의 속성이 의존 속성으로 되어 있다. FrameworkElement, Control 등과 같이 DependencyObject 에서 파생 된 클래스에서만 정의 할 수 있다. 우리가 흔히 속성으로 알고 사용하는 Height도 의존 속성이다. 💻 XAML 💻 XAML.cs using Sys..
💻 Duty 클래스 (View Model에 해당) using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld1 { public enum DutyType // 열거형 { Inner, OutSide } public class Duty { private string _name; // 직무명 private DutyType _dutyType; // 직무타입(내근, 외근) public Duty() { } // 생성자 public Duty(string name, Du..
✍ 데이터 트리거란? 데이터 트리거 클래스는 이전의 프로퍼티 트리거의 Property를 바인딩(Binding)으로 대신하는 것을 제외하고는 Trigger와 유사한데, 바인딩은 다른 엘리먼트를 참조한다. 데이터 트리거는 바인딩 되는 값이 특정 값을 가질 때 프로퍼티를 설정할 수 있게 해준다. 요소로 표시하며 트리거는 의존속성이 아닌 속성에 사용된다. MVVM 패턴을 사용하여 데이터 바인딩을 사용하는 경우 이상적이다. 💻 CheckBox와 TextBlock 컨트롤을 만드는데 최초 화면을 로드 할 때는 TextBlock이 화면에 나타나지만 CheckBox를 클릭하면 사라지는 예제 --> CheckBox 선택 시 TextBlock이 숨겨지는 트리거 예제 💻 Slider 컨트롤과 ProgressBar 컨트롤을 만..
✍ WPF Trigger 란? 트리거는 어떤 조건, 이벤트 등이 주어졌을 때 묵시적으로 컨트롤의 상태 또는 이벤트 핸들러 등을 호출하는 기능을 의미한다. 즉, 트리거를 사용하면 엘리먼트의 프로퍼티나 데이터 바인딩, 이벤트에서 발생하는 변화에 엘리먼트와 컨트롤이 어떻게 반응할지를 정할 수 있다. Style의 Setter와 비교할 때 둘 다 프로퍼티를 설정하지만, Setter는 엘리먼트가 처음 생성되었을 때의 프로퍼티를 설정하며, 트리거는 프로퍼티가 변경되는 경우에 프로퍼티를 설정하는 점이 다르다. ✍ 프로퍼티 트리거 TriggerBase 중 가장 일반적인 파생클래스는 특정 프로퍼티의 변화(어떤 값을 가졌을 때)에 내부에 정의한 Setter 컬렉션이 실행되는 트리거이다. 컨트롤이나 엘리먼트가 반응하는 방법을..
StaticResource는 태그 확장으로 StaticResourceExtension이라는 클래스를 사용하기를 지시하는 코드이다.
WPF Template의 종류에는 크게 Data Template, Control Template, ItemsPanel Template가 있다. Template은 비주얼 트리를 대체하고 사용자가 정의하기 위한 방법이다. 비주얼 트리를 생성하고 기존의 비주얼 트리를 오버라이드 해 비주얼을 사용자가 변경할 수 있게 한다. 이는 불필요한 상속을 줄이고 디자인과 비주얼의 변경을 쉽게 한다. ✍ Data Template Template를 사용해서 데이터 표시를 좀 더 자유롭고 유연하게 정의할 수 있다. DataTemplate은 특정 데이터 형식을 시각화하기 위해 사용한다. 즉, 특정 데이터 형식에 해당하는 비주얼을 사용자가 제공하는 것이다. 이로써 데이터의 표현에 있어 사용자에게 유연성을 제공한다. DataTemp..
WPF의 이벤트는 크게 버블링과 터널링로 나뉘어진다. ✍ 버블링 자식에서 부모로 이벤트가 이동을 한다. ✍ 터널링 부모에서 자식으로 이벤트가 이동을 한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media...