본문 바로가기

개발자국/WPF / Expression

Prism 4.0 - Chapter 1. Introduction Prism 4.0 도움말을 번역한 글입니다. 중간 중간 오역도 (당연히) 있을 수 있으며, msdn에 번역된 기사에서 나온 표현을 최대한 쓰려고 노력했습니다(만 잘 안되네요). 이상하다 싶으면 반드시 Prism 4.0 도움말에서 원문을 읽어보세요. 시간 날 때 마다 틈틈이 번역해서 올리겠습니다. – Spencer 원문보기 시작하며 Prism은 풍부하고, 유연한, 그리고 유지 보수가 쉬운 WPF 데스크톱 응용이나 실버라이트 RIAs, Windows Phone 7 응용을 쉽게 디자인하고 개발 할 수 있는 가이드라인을 제공합니다. ‘관심자의 분리(seperation of concerns’나 ‘낮은 결합도(loose coupling)’과 같은 중요한 아키텍처적 디자인 원칙을 포함하는 디자인 패턴을 사용하여, 독.. 더보기
Custom Panel in WPF 오늘 인도 엔지니어(라고 부르기엔...)가 짠 터치키보드 소스를 보았다. XAML엔 온갖 잡새가 날아들고, 비하인드 코드에는 제어문이 가득했다. 이걸 돈주고 짠거라니...코드를 앞으로 F/U할 형도 울고, 나도 울고, PL도 울고 다 울었다. 그래서 나라면 어떻게 짤까 란 생각에 하이네캔 하나와 함께 코딩을 해보기로 했다. 일단 (탁구를 열심히 치느라 졸려서) 오늘은 Custom Panel에 대해서 정리해볼까 한다. WPF에는 여러 컨트롤 그룹으로 구성되어 있다. 가령 입력을 받는 TextBox, 목록 형태의 ListBox, ComboBox, 그리고 자식 컨트롤의 배치를 담당하는 Panel 그룹이 있다. 이 글까지 검색해서 온 사람들이라면, WPF의 Grid, StackPanel, WrapPanel, C.. 더보기
[WPF] Window Loaded Event in MVVM MVVM Model로 간단하게 코드를 작성하다 보면 다음과 같이 Behind 코드에서 ViewModel을 가져오는 경우가 있다. this.DataContext = new MinsuViewModel(); 자, 오늘은 이놈이 말썽을 일으키셨다!! 1: public partial class MainWindow : Window 2: { 3: public MainWindow() 4: { 5: InitializeComponent(); 6: this.DataContext = new MinsuViewModel(); 7: } 8: } 요놈이 무슨 문제가 있을까..... 곰.....곰......곰........문.......문......... 곰이 꺼꾸로 자뻐지도록 생각을 해봤다. 왜!? 1: 2: 3: 4: 5: 요 인.. 더보기
[WPF] Key Event of "Enter" in MVVM Model Command (Using InputBindings) WPF 에서 MVVM 모델을 통해 코딩을 하고 있다. TextBox 혹은 Editable ComboBox 등등에서 키를 입력하면, Command를 날려주는데, KeyUp Event를 많이 사용했다. Enter Key에서만 Command가 발생해야할 상황이 많은데, Binding과 Command를 사용한 MVVM 에서는 이것이 Enter인지를 알 수 가 없었다!! 이 때, 검색을 하던 중 "InputBindings" 라는 개념을 찾았다!! olleh~ 자, 코드를 살펴 보면, ComboBox가 존재하고, 얘는 Editable 하단다. Text가 어딘가에 바인딩이 되어있다. 원래대로면 Interaction Trigger를 이용해서 "KeyUp" Event에 Command를 발생시켰더랬다. 이랬더니 얘가 En.. 더보기
[Expression] DatagridCell 선택영역 DatagridCell의 Template을 보면, 위와 같이 Border와 ContentPresenter로 이루어져 있다. 이 때, Border의 Background 속성을 주지 않으면, Cell의 선택 영역이 ContentPresenter의 영역으로만 정해진다. 아마도, Mouse Click 시에 Hit Test 에서 영역이 없는 것으로 인식 되는 듯 하다. 더보기
[Expression Blend] Margin의 기준점이 이상한 곳에 머물어 있을때, Blend를 통해 Control을 만드는 작업을 하다보면 그림과 같이 엉뚱한 곳에서 Margin값 기준점이 만들어 지는 경우가 종종 있다. 이런 경우는 Column Definition을 조정하는 과정에서 마지막 하나의 ColumnDefinition이 특정 Pixel 값으로 존재하여 남기 때문이다. Xaml 코드를 보면 다음과 같다. 바로 요놈 때문에 발생하는 현상으로, 놓치기 쉽다. 더보기
[Expression] Hint Text in TextBox TextBox를 사용하다 보면, 기본으로 "Search" 라는 글씨가 쓰여 있고, 클릭을 하게 되면 사라지는 Control이 있다. 이것을 TextBox Trigger로 만들어 주는 코드가 있다. 더보기
[WPF] BackgroundWorker with UI Thread ProgressBar progressbar 를 사용하려다 보니, UI Thread 안에서 동작하는 함수 때문에, progressbar는 UI님이 못된 함수놈을 기다리느라 여념이 없으시다. Thread 하나로 모든걸 해결하려는 "간단유틸" 만드는 귀차니즘.. 그리하여, BackgroundWorker 라는 곳으로 복잡한 함수를 보내버려 UI 님을 살려 드리고, 저 뒷편에서 UI 님에게 progress value를 주려고 시도하였다. 일단 소스부터 붙여 봅시다. private BackgroundWorker backGroundWorker = new BackgroundWorker(); private delegate void UpdateValueDelegate(ProgressBar p, int v); public MainWindow().. 더보기
[WPF] Scrollbar Position Event 요즘 폰으로 스크롤을 하다 보면, 스크롤이 다 내려갈 즈음에 Data가 Update 되는 경우가 많다. 이걸 WPF의 Listbox 나 Datagrid 혹은 ScrollViewer 에서 적용하기 위해 알아보았다. Test를 하기 위해, ScrollViewer를 만들고 ScrollChanged Event를 받았다. private void scrollViewer1_ScrollChanged(object sender, ScrollChangedEventArgs e) { ScrollViewer aa = new ScrollViewer(); textBlock1.Text = e.VerticalOffset.ToString(); textBlock2.Text = e.ExtentHeight.ToString(); textBloc.. 더보기