C#/WPF27 [WPF] Dependency Property xaml에서 ⭐나만의 property⭐를 만들 수 있다는 걸 알고 계셨나요?전 알고 있었습니다. 하지만, ⭐나만의 property⭐가 없어도 구현에 문제가 없어서 Dependency Property를 공부하는 걸 미루다가 프로젝트에서 사용되는 걸 보고, 이 참에 정리하고자 글을 작성해 봅니다. Dependency Property * XAML, C# 코드 비하인드(.xaml.cs)에서 사용 가능 * 의존속성 값이 변경되면 자동으로 어떤 것을 로드되게 하거나 랜더링 되도록 할 수 있음 * 애니메이션, 스타일링, 데이터바인딩 등에 자주 사용 * 기본으로 제공되는 UI 컨트롤은 대부분의 속성이 의존 속성으로 되어 있음 1. MainWindow에서 바로 사용하기MainWindow.xaml .. 2024. 7. 7. [WPF] ControlTemplate의 영향력 xaml에서 비슷한 두 개의 코드에 style을 적용시켰는데, 하나의 코드에서는 동작하고 하나의 코드에서는 동작을 하지 않았습니다. 이유를 간단하게 정리해 보고자 합니다.저에겐 MouseOver 시, 글씨를 굵게 만들어주는 Style이 하나 있습니다. 스타일을 한 번 정의해두면, 여러 UI 요소에 동일한 스타일을 적용할 수 있어 코드의 재사용성.. 2024. 6. 30. [WPF] 생성자 단위 초기화와 필드 단위 초기화 현재 프로젝트를 진행하고 있는데, 특정 API를 호출해서 사용하고 있습니다. 무얼 정리하면 좋을까하다가 java와 달리 C#에서는 필드라는 개념이 추가적으로 있는데, 이와 관련하여 정리해보고자 합니다. 생성자를 이용한 초기화1234567891011private string _initializationConstructor;public string InitializationConstructor{ get { return _initializationConstructor; } set { _initializationConstructor = value; }} public ViewModelMain(){ InitializationConstructor = "Initialize with Constructor.. 2024. 6. 4. [WPF] MVVM 패턴에서의 전체 선택 이번 프로젝트에서는 수동 전체 선택을 구현하게 되었습니다. 🤹장작 6시간의 대장정.. 무엇이 문제이고, 어떻게 해결했는지 정리해봅니다. 사실 전체 선택을 누르면 전체가 선택되고, 전체 선택을 해제하면 전체가 해제되도록 만드는 것은 쉽습니다.View12345678910111213141516171819202122Window> Grid> StackPanel Orientation="Vertical"> CheckBox Content="All" IsChecked="{Binding IsAllChecked, Mode=TwoWay}" /> Separator/> Ch.. 2024. 5. 19. [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. 이전 1 2 3 4 5 다음