반응형

프로그래밍 129

[WPF] Usercontrol 사용 시, 디자이너 Exception 문제

Usercontrol을 이용하여 화면을 구성할때, Designer에 오류가 뜨면서 화면을 못볼때가 있다. 이유는 디자이너가 Usercontrol을 할때 생성자를 들어가서 작업을 해서 생기는 문제라나 뭐라나.. 여튼 디자이너모드일 경우 생성자 처리를 안해주면된다. UserControl 생성자에 InitializeComponent위에 아래와 같은 코드를 집어넣어주면된다. if (DesignerProperties.GetIsInDesignMode(this)) return;

프로그래밍/WPF 2022.08.04

[WPF] TabControl header Content Binding

TabControl에 ItemsSource을 바인딩처리하여 MVVM 패턴을 적용할때, content는 바인딩하기는 쉬운데 스타일은 그대로 두고 Header의 이름만 바인딩 시키고 싶을 수 있다. 방법은 아래와 같다. public class TabViewModel { public string Header { get; set; } public object DataContext { get; set; } } public MainWindowViewModel() { Tab = new ObservableCollection(); Tab.Add(new TabViewModel { Header = "Test 1", DataContent = new ViewModel() }); Tab.Add(new TabViewModel { ..

프로그래밍/WPF 2022.08.03

[WPF] MouseBinding KeyBinding Binding

WPF 를 사용하다보면 마우스나 키보드를 이용하여 상호작용을 해야할 때가 있다. 이럴때 컨트롤에 InputBindings을 이용하여 MVVM으로 바인딩하는 방법이 있다. MouseBinding 할때 Gesture를 이용해도 되고, MouseAction을 사용해도 된다. 보통은 저렇게 쓸때 자동완성기능에 없는데 MouseBinding의 경우 아래의 URL가서 MouseAction 관련 Enum을 확인하면된다. https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.input.mousebinding?view=windowsdesktop-6.0 MouseBinding 클래스 (System.Windows.Input) MouseGesture를 RoutedComman..

프로그래밍/WPF 2022.08.03

[WPF] TreeView MVVM IsSelected & IsExpanded Binding

일단 TreeView의 사용법을 한번 알아보자. 위와 같이 xaml을 작성한다면 아래와 같이 나온다. 우리가 여기서 중점적으로 봐야하는것은 ComboBox에서 ComboBoxItem 마냥 TreeViewItem이라는 컨트롤이다. https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.controls.treeviewitem?view=windowsdesktop-6.0 TreeViewItem 클래스 (System.Windows.Controls) TreeView 컨트롤에 선택 가능한 항목을 구현합니다. docs.microsoft.com TreeViewItem 을 MS Docs에서 확인해보면 속성으로 IsExpanded, IsSelected, IsSelection..

프로그래밍/WPF 2022.08.03

[WPF] DispatcherUnhandledException

일반적으로 오류 핸들을 할때 try catch 문을 많이 사용한다. 그러나 얼마나 디테일하게 작업을 했더라도 exception이 발생이 경우가 많다. 그렇다고 각 로직 전체에 try catch 문을 하자니 cost가 크다. DispatcherUnhandledException 는 wpf app에서 처리하지 못한 exception이 발생하면 처리해준다. App.xaml.cs에 아래와 같이 추가해준다. App.xaml에서 이벤트 핸들러를 통해 해주어도 되고, startup에 아래와 같이 물려도 된다. this.DispatcherUnhandledException += (s, ex) => { MessageBox.Show(ex.Exception.ToString()); ex.Handled = true; };

프로그래밍/WPF 2022.06.22

[오류 해결] 관리 디버깅 도우미 'ContextSwitchDeadlock'

좀 데이터가 큰 녀석을 CSV 로 만들다보니 아래와 같은 오류가 발생되었다. 관리 디버깅 도우미 'ContextSwitchDeadlock' : 'CLR에서 60초 동안 COM 컨텍스트 0x1500cf0에서 COM 컨텍스트 0x1500c38(으)로 전환하지 못했습니다. 대상 컨텍스트/아파트를 소유하는 스레드가 펌프 대기를 수행하지 않거나, Windows 메시지를 펌프하지 않고 매우 긴 실행 작업을 처리하고 있는 것 같습니다. 이러한 상황은 대개 성능에 부정적인 영향을 주며 응용 프로그램이 응답하지 않거나 시간이 흐름에 따라 메모리 사용이 증가하는 문제로 이어질 수도 있습니다. 이 문제를 방지하려면 모든 STA(Single Threaded Apartment) 스레드가 펌프 대기 기본 형식(예: CoWaitF..

반응형