본문 바로가기

Dev::DotNet/WPF

(23)
단순 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;
xaml 에서 enum binding 하기 enum 으로 정의한 값에 대해서 ItemCollection 에 xaml 코드로 binding 하기 …
WPF TextBox Caret 의 좌표 가져오기 WPF 의 TextBox 를 이용해서 현재 입력하고 있는 문자열에 자동완성 비스무리한 기능을 넣으려고 하다 보니 현재 Caret (현재 커서가 간 위치) 위치에 삽입할 수 있는 문자열을 표시할 팝업 창을 보여줘야 했다. 그러다 보니 그 팝업 창을 보여주기 위해서 Caret 의 좌표가 필요했다. public Point GetCaretPos(TextBox textBox) { int tRowIdx = textBox.GetLineIndexFromCharacterIndex(textBox.CaretIndex); int tLineFir = textBox.GetCharacterIndexFromLineIndex(tRowIdx); int tColIdx = textBox.CaretIndex - tLineFir; Format..
WPF 에서 Resize 시 멈춤 현상 얼마 전부터 몇몇 Client 에서 프로그램을 Resize 할 때 마다 멈추는 현상이 발생하였다.프로젝트 오픈이 얼마 남지 않은지라 비상전시 체계로 돌입하여 원인을 찾기 시작했다. 특정 Client 에서 프로그램의 내부 / 외부를 가지 않고 모든 Resize 시 CPU 점유율이 50%까지 치솟고 몇 십 초에서 몇 분까지 멈추기 때문에 굉장히 심각한 문제였다. 하지만 WPF 로 만들었기 때문에 Resize 에 대해서 특별히 다른 처리를 해준 것은 없었고 그래서 이벤트나 쓰레드 는 물론이고 안에 들어가 있는 거의 모든 로직에 대해서 검토를 하였지만 별 다른 이상을 찾지를 못했다. 테스트를 하다 보니 MeasureOverride 와 ArrangeOverride 에서 거의 대부분의 시간을 소요하는 것을 알게 되..
NetAdvantage XamDockManager 의 Menu 비활성화 infragistics NetAdventage 의 XamDockManager 를 사용하다보니 Docking Control 이라면 당연히 제공되는 기능이지만... 사용자가 해당 Pane 의 Docking 속성을 변경 할 수 있는 팝업 메뉴를 제공하고 있었다. 하지만 이런 메뉴가 필요치 않아서 제거하려고 약간의 문제점이 있었다.단순히 메뉴를 비활성화 하는 프로퍼티가 없는 듯 했다. 확실히는 잘 모르겠다. Template 을 재정의해서 어찌어찌하면 될 것 같기도 하고...Pane 헤더 부분을 구성하고 있는 별도의 컨트롤이 있어서 그녀석을 어찌어찌해주면 될 것도 같지만... 그냥 눈에 보이는 컨트롤 부분에서 해결하려고 하니저 메뉴에 나오는 기능에 대한 활성/비활성에 대한 옵션은 제공하고 있었고 저 메뉴에 포함된..
ComboBox 의 SelectedValue 와 SelectedItem 의 성능적 차이 WPF ComboBox 에 Item 을 선택할 때 SelectedIndex SelectedValue SelectedItem 이렇게 세가지 방법이 있다. 이번 주제는 SelelctedValue 와 SelectedItem 의 차이에 대해서 이야기 해보겠다. SelelctedValue 는 ComboBox 에 ItemsSource 를 Binding 시 그 바인딩 한 객체의 특정한 프로퍼티를 지정하여 검색하여 할 때 그 지정한 프로퍼티의 값을 찾아서 해당 아이템을 선택한다. SelectedItem 은 Binding Item 의 객체를 넣어주면 그 객체로 그냥 선택이 된다. 문제는 2개의 성능에서 차이가 있다는 것이다.일반적으로 아이템의 개수가 작거나 컴퓨터의 성능이 어느 정도 이상이면 이런 문제는 발생하지 않지만..