본문 바로가기

전체 글

(96)
WPF Data Binding Error 처리 WPF를 하다 보면 Binding 에러는 흔히 발생한다. 하지만 Binding 에러는 Binding 내부에서 Exception을 처리하기 때문에 에러가 났을 때 알아차리기가 쉽지 않다. 더군다나 Binding 한 Property에 로직이 들어가 있는 경우 해당 부분에서 발생한 Exception 또한 Binding 내부에서 처리해버리기 때문에 Unhandled Exception 으로도 떨어지지 않는다. 그래서 명확하게 Binding 에러를 파악하고 싶을 때, PresentationTraceSource 의 DataBindingSource 에 Listener 를 설치하여 메시지를 받아올 수 있다. >> Detecting Binding Errors 아마 Listener 를 설치하고 실행시켜보고 생각지도 않은 많..
ODP.NET 에서 Parameter 사용할 때.... ODP.NET 을 사용할 때, 조금만 해보다 보면 뭔가 이상한 걸 느낄 수 있다. 쿼리에 대해서 이상한 결과가 나온다거나 무슨 데이터 타입이 맞지 않는다는 에러나...등등.... 그래서 TOAD 나 ADO.NET 으로 해서 해보면 아주 정확하게 원하는 결과가 나온다. 조금만 보다 보면 파라매터를 사용하는데 뭔가....ㅡㅡ;;; 파라매터가 지정한 이름으로 매칭되는 것이 아니라...삽입된 순서에 따라서 매칭된다는 사실이다. OLE 처럼 ? 로 파라매터를 쓰는것도 아닌데..순서라니...ㅡㅡ; 찾아보니...기본이 순서로 지정하고 별도의 설정을 했을 때 이름으로 매칭이 된다고 한다. OracleCommand 에 보면 BindByName 이라는 프로퍼티를 true 로 하면 원하는대로 동작된다. 왜 대체...순서를 ..
Hardcodet.NotifyIcon.Wpf 의 MessageBox? WPF 에서 NotifyIcon 을 사용해야 할 때, Nuget 에 찾아보면 Hardcodet.NotifyIcon.Wpf 라는 것이 나온다. 이걸 통해서 쉽게 NotifyIcon 을 사용할 수 있다. 헌데...여기에 Command 를 Binding 하여 MessageBox 를 사용 할 때, 그냥 MessageBox 가 그냥 떴다가 사라져 버리는 문제가 있는 것 (?) 같다. 이것의 문제가 Hardcodet.NotifyIcon.Wpf 인지는 정확하지 않지만.. 이런저런 테스트 결과...잠정적으로 Hardcodet.NotifyIcon.Wpf 의 문제라는 결론을 내렸다. NotifyIcon 도 써야하고 MessageBox 도 써야하는데...어떻게 해야하나?ㅡ,.ㅡ MessageBox.Show 에 owner 를..
단순 Event Behavior 단순 Event 에 Behavior 를 사용하고 싶을 때 Event 별로 Behavior 를 만들기 귀찮고.. NuGet 에 보면 "AttachedCommandBehavior" 가 있지만 그다지 참조하기는 싫을 때...가 있어서... public static class EventBehavior { #region EventBehavior private static readonly DependencyProperty EventBehaviorProperty = DependencyProperty.RegisterAttached( "EventBehavior", typeof(EventBehaviorBinding), typeof(EventBehavior), null); #endregion #region EventName..
ListView Header Click 으로 정렬 ListView 를 사용할 때 Header 컬럼을 클릭해서 해당 컬럼을 기준으로 정렬하는 기능을 많이 사용한다. 해당 기능에 대해서는 MSDN 에 친절하게 예제가 나와있다. MSDN : 머리글을 클릭할 때 GridView 열 정렬 하지만 해당 예시를 그대로 사용할 경우 약간의 문제가 발생한다. void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e) { GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader; ListSortDirection direction; if (headerClicked != null) { if (headerClicked.Ro..
DPI 비율 구하기 DPI 비율 구하기 System.Windows.Media.Matrix m = PresentationSource.FromVisual( System.Windows.Application.Current.MainWindow).CompositionTarget.TransformToDevice;double DpiX = m.M11; double DpiY = m.M22;
new 한정자(new Modifier) class 를 상속받으면 당연히 상속받은 class 의 속성과 기능을 사용할 수 있다. 하지만 흔히 기본 클래스의 기능을 변경하여 사용하며그럴 때는 virtual 을 사용하던 abstract 를 사용하던 다양하게 재정의가 가능하다. 하지만 new 한정자를 사용해서도 가능하다. MSDN 에는 "한정자로 사용되는 new 키워드는 기본 클래스에서 상속된 멤버를 명시적으로 숨깁니다." 라고 적혀있다. 12345678910111213class Class1{ public void TestMethod() { }} class Class2 : Class1{ public void TestMethod() { }}cs 하나의 클래스를 상속을 받아서 부모 클래스가 가지고 있는 메소드와 동일한 이름의 메소드를 자식에 선언하면Vi..
xaml 에서 enum binding 하기 enum 으로 정의한 값에 대해서 ItemCollection 에 xaml 코드로 binding 하기 …