본문 바로가기

Dev::DotNet/WPF

(23)
XmlnsDefinition 을 통한 namespace 매칭 WPF 프로젝트를 만들어서 Window 를 만들면 이런 Xaml 코드가 생긴 것을 볼 수 있다. 처음 WPF 를 접하면 "xmlns" 과 "xmlns:x" 가 약간 낯설다. 조금만 공부하면 저것들이 namespace 를 Xaml 코드에서 사용하기 위해서 정의한 것임을 알 수 있다. 참고> xmlns 기본 네임스페이스와 닷넷 네임스페이스의 맵핑 구조 wpf 에서는 xmal 에서 여러 DLL 에 정의된 namespace에 접근하기 위해서XmlnsDefinition 을 통해서 몇 개의 URL 로 정의하여 매칭시켜놓았다. [assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml", "System.Windows.Markup")] [assem..
WPF 에서 DoEvents VB 도 Winform 도 이벤트를 일괄 처리하는 DoEvents 라는 걸 지원한다. WPF 에서는 Dispatcher 에서 진행되지 않은 UI 작업을 일괄 처리함으로써 비슷한 효과를 낼 수 있다. public static void DoEvents() { if (System.Windows.Application.Current != null) { // WPF System.Windows.Application.Current.Dispatcher.Invoke ( System.Windows.Threading.DispatcherPriority.Background, new Action(delegate { }) ); } else { // WinForm System.Windows.Forms.Application.DoEven..
WPF Visual Tree or Logical Tree 순회 WPF 에서는 Logical Tree 와 Visual Tree 가 있다. 자세한 개념은 MSDN 이 가장 잘 설명해 놓았다.(http://msdn.microsoft.com/ko-kr/library/ms753391.aspx) 쉽게 이야기 하면어떤 "UI요소" 가 구성된 하위의 구조를 이야기 한다. 하나의 UI요소 는 다른 여러 UI요소들로 구성되어 있고UI요소의 Template 안에는 이 UI요소 를 표현하는 여러 UI요소 가 들어있다. TextBox 가 하나 있다면 TextBox 의 Template 에는 여러 UI요소들이 TextBox 의 모양을 구성하고 있다. Template 은 WPF 의 가장 기본적인 내용이다. 이런 윈도우를 구성해보았다. 이런 윈도우에 포함된 UI요소들을 트리로 나열한 것이 Log..
NetAdvantage XamDockManager 의 Splitter 고정 Infragistics NetAdvantage 의 DockManager 로 Layout 구성시 각 Pane 사이에 Splitter 로 사이즈 조절이 가능하다. 하지만 사이즈 조절이 안되게 고정하고 싶을때는 DockedPaneSplitter 을 비활성화 해주면 된다. xmlns:igDock=http://infragistics.com/DockManager DockManager 의 하위 아이템인 ContentPane 이나 TabGroupPane 등에 너비나 높이를 지정해줘서 될 수도 있겠지만 그 뒤에는 resize 에 따른 변경이 되지 않기 때문에 DockedPaneSplitter 을 비활성화 해주는 것이 더 깔끔한 방법인 거 같다.
WPF Filter ComboBox ComboBox 컨트롤을 사용하면 사용자가 입력하는 문자열에 따라서 아이템이 Filter 되서 나오는 것이 편할 때가 있고손쉽게 Filter 가 되게 구현할 수 있다. 하지만 ComboBox 를 Edit 를 하다보면 한글에 대해서 입력한 값이 Text 프로퍼티에 바로바로 들어가지 않는 것을 알 수 있다. 예상으로는 아마도 ComboBox 에서 한글 입력에 대해서 음절(or 어절)이 끝나지 않았다고 판단하는 것 같고 그래서 Text 프로퍼티에 해당 값을 넣어주지 않는 듯하다. [XAML] 테스트1Item 테스트2Item 테스트3Item [CODE]using System.Windows;using System.Windows.Controls;using System.Windows.Input; namespace W..
XAML 에서 StringFormat 으로 문자열 표시 XAML 에서 StringFormat 으로 문자열 표시 참고 : http://elegantcode.com/2009/04/07/wpf-stringformat-in-xaml-with-the-stringformat-attribute/
FlowDocument 의 Block 작업영역 구하기 FlowDocument 로 생성한 문서를 FixedDocument 로 변환할 때 페이지가 자동으로 나누어 지는데 나누어진 문서가 내가 원하는 대로 나누어 지지 않아서 FlowDocument 생성시 중간에 공백을 넣어볼려고 하다보니 FlowDocument 에 삽입된 Block 이 차지한 영역의 정보가 필요하게 되었다. System.Windows.Rect rect = block.ContentEnd.GetCharacterRect(LogicalDirection.Forward); 이렇게 하면 FlowDocument 에서 해당 Block 의 작업영역의 정보가 담긴 System.Windows.Rect 객체를 반환한다.