반응형

Behavior 3

[WPF] DataGrid 가상화와 ComboBox SelectedItem 불일치 문제 해결: MVVM 패턴에서의 효율적인 접근 방법

WPF(Windows Presentation Foundation)에서 DataGrid는 대량의 데이터를 효율적으로 표시하기 위한 강력한 컨트롤입니다. 그러나 가상화(Virtualization)를 사용할 때 ComboBox와 같은 편집 컨트롤을 포함하면 예상치 못한 문제가 발생할 수 있습니다. 특히, MVVM 패턴을 사용하는 경우에는 이러한 문제가 더욱 복잡해질 수 있습니다. 이번 글에서는 DataGrid의 가상화로 인해 발생하는 ComboBox의 SelectedItem 불일치 문제를 분석하고, MVVM 패턴을 유지하면서 이를 해결하는 방법을 소개하겠습니다. 문제 상황DataGrid에 가상화를 적용하고 각 행(Row)에 ComboBox를 포함시켰을 때, SelectedIndex가 -1인 경우 ComboBo..

프로그래밍/WPF 2024.10.15

[WPF] File Drag & Drop MVVM Pattern using Behavior

외부의 파일을 종종 프로그램 내부로 가져와서 쓸때가 있다. 보통은 File Open Dialog등을 이용하여 가져올수도 있지만 그냥 파일 탐색기에서 여러 파일들을 선택해서 Drag & Drop형태로 가져올 때도 있다. 이럴때 Behavior를 이용하여 File Drop을 사용하는 방법을 알아보자. 1. 우선 Drag & Drop의 영역을 선언해주고 Drop을 가능하도록 처리해준다. AllowDrop=True 2. 바인딩할 Behavior 클래스를 만든다. class FileDropBehavior : Behavior { public static readonly DependencyProperty DroppedFilesProperty = DependencyProperty.Register("DroppedFile..

프로그래밍/WPF 2022.12.07

[WPF] MouseWheel Delta Binding

InputBinding으로 보통 마우스 클릭 위주로 바인딩은 쉽다. 하지만 MouseWheel의 Up Down의 경우 MVVM 으로 바인딩하려면 다른방법을 써야한다. Behavior를 이용하는 방법인데 이는 아래와 같다. 일단 MouseWheel의 Argument를 가져오기 위해 어떤 클래스를 상속해야하는지 확인해보자. https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.uielement.mousewheel?view=windowsdesktop-6.0 UIElement.MouseWheel 이벤트 (System.Windows) 마우스 포인터가 이 요소 위에 있는 동안 사용자가 마우스 휠을 굴리면 발생합니다. docs.microsoft.com 위와 같이 M..

프로그래밍/WPF 2022.08.22
반응형