반응형

WPF 48

[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

[WPF] ListView 또는 ListBox 에서 ScrollIntoView 사용법

Behavior 클래스를 먼저 작성한다. public static class ScrollToSelectedBehavior { public static readonly DependencyProperty SelectedValueProperty = DependencyProperty.RegisterAttached( "SelectedValue", typeof(object), typeof(ScrollToSelectedBehavior), new PropertyMetadata(null, OnSelectedValueChange)); public static void SetSelectedValue(DependencyObject source, object value) { source.SetValue(SelectedValue..

프로그래밍/WPF 2022.04.15

[WPF] Combobox AutoComplete 기능 구현

WPF에서 AutoComplete 기능을 사용하는 방법에 대해 알아본다. 위의 그림처럼 Combobox에 텍스트를 입력하면 필터링처리 된 결과만 보여주게 된다. private List _sourceItemList; private List _itemList; public List ItemList { get { return _itemList; } set { SetProperty(ref _itemList, value); } } private bool _comboBoxDropDown; public bool ComboBoxDropDown { get { return _comboBoxDropDown; } set { SetProperty(ref _comboBoxDropDown, value); } } private st..

프로그래밍/WPF 2022.03.30

[WPF] Storyboard 이용하여 Visibility 제어

Open Button과 Close Button이 각자 누를 때마다 서로 반전되어 화면에 보이는 상황이 있다고 하자. 만약 MVVM 패턴에서 이를 제어하려고 한다면 Command를 Binding 하여 특정 변수를 Visivility에 바인딩하여 제어해야 할 것이다. 심지어 Converter를 작성해야한다. 굳이 그럴 필요 없이 Storyboard와 Event Trigger를 이용하여 이를 아래와 같이 제어 할 수 있다. Event Trigger를 등록할 버튼에 이름을 지정해준다. Event Trigger에 등록한 버튼 이름과 트리거에 물릴 이벤트를 연결한다. 트리거가 발생될 때 사용될 Storyboard를 작성한다.

프로그래밍/WPF 2022.03.30

[WPF] canvas 내용을 비트맵 이미지로 저장

canvas에 있는 내용을 그대로 화면으로 캡쳐하여 비트맵 파일로 저장하는 방법이다. 일단 저장을 원하는 Canvas Control에 x:Name을 지정한다. 여기선 그냥 canvas라고 지정하였다. canvas에 그리기 원하는 내용을 넣는다. 아래의 코드를 실행시킨다. RenderTargetBitmap rtb = new RenderTargetBitmap((int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96, PixelFormats.Pbgra32); rtb.Render(canvas); using (Stream stream = new FileStream(System.Environment.CurrentDirectory + @"\background.bmp", ..

프로그래밍/WPF 2021.09.09
반응형