본문 바로가기

wpf18

WPF Control 이미지 저장하기 WPF의 Control을 이미지를 저장하는 방법입니다. 1. 아래와 같이 Grid에 Image, TextBox로 구성했습니다. Grid내의 Control을 이미지로 저장 할 겁니다. XAML 2. Grid Control인 grStamp를 이미지로 저장하는 소스입니다. RenderTargetBitmap rtb = new RenderTargetBitmap((int)grStamp.ActualWidth, (int)grStamp.ActualHeight, 96, 96, PixelFormats.Pbgra32); rtb.Render(grStamp); PngBitmapEncoder png = new PngBitmapEncoder(); png.Frames.Add(BitmapFrame.Create(rtb)); MemoryS.. 2021. 5. 20.
WPF - WebBrowser에 사이트 연결 오류 시 처리하기. 웹브라우저에 네트워크가 문제로 연결 안될 경우 처리 방법입니다. 메세지를 표시하던가 아니면 로컬의 HTML 페이지를 표시하기 위한 방법입니다. 1. XAML에 WebBrowser를 추가합니다. 2. Window Loaded 이벤트나 생성자에 아래의 코드로 처리하면 됩니다. try { WebRequest request = WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { webBrowser.Source = new Uri(url); } else { throw new Exception(); } } catch { M.. 2021. 5. 7.
WPF - DataGrid에 동적으로 Column 추가하기 DataGrid에 동적으로 Column을 추가하는 코드입니다. 코드는 간단한데 Text 컬럼을 추가하는 예입니다. 참고로 체크박스(DataGridCheckBoxColumn), 콤보박스(DataGridComboBoxColumn) 등을 추가 할 수 있습니다. DataGridTextColumn textColumn = new DataGridTextColumn(); // DataGrid의 컬럼헤드 textColumn.Header = tbColumn.Text; // 데이터 바인딩 textColumn.Binding = new Binding(tbColumn.Text); // 컬럼 폭 textColumn.Width = 100; // DataGrid에 컬럼 추가 dataGrid.Columns.Add(textColumn); 2021. 4. 1.
WPF - 메트로 테마(Metro Theme) 적용하기 WPF 메트로 테마 라이트와 다크를 적용해보도록하겠습니다. 1. 기본 WPF 화면은 아래와 같습니다. 2. 메트로 테마를 NuGet에서 설치합니다. (1) 프로젝트 참조의 팝업 메뉴 NuGet 패키지 관리를 클릭합니다. (2) 메트로 다크 테마와 메트로 라이트 테마를 설치합니다. (3) 프로젝트에 Themes 폴더가 생성되고, Metro는 라이트, MetroDark를 다크 테마입니다. 3. 메트로 라이트 테마 적용하기 위해서 App.xmal에 아래와 같이 수정합니다. 4. 프로젝트를 시작해서 메트로 라이트 테마를 확인 해보세요. 5. 메트로 다크 테마 적용하기 위해서 App.xmal에 아래와 같이 수정합니다. 6. 프로젝트를 시작해서 메트로 다크 테마를 확인 해보세요. (Window의 Backgroud .. 2021. 3. 23.
WPF - Application의 DispatcherUnhandledException를 이용한 모든 Exception 처리 WPF - Application의 DispatcherUnhandledException를 이용한 모든 Exception 처리 애플리케이션 개발 시 런타임에 발생하는 Exception으로 애플리케이션이 강제 종료되는 현상이 발생하곤 합니다. try catch로 일일이 처리 할 수도 있으나 작업량이 너무 많습니다. Application의 DispatcherUnhandledException 이벤트를 활용하여 모든 Exception에 대해서 메세지창으로 사용자에게 보여주고, 로그를 저장하여 유지보수에 유용하게 활용하면 좋을 듯합니다. 1. App.xml에 DispatcherUnhandledException 이벤트를 추가합니다. (1) App.xaml을 엽니다. (2) App.xaml의 DispatcherUnhan.. 2021. 2. 25.